2009-10-15 5 views
4

Lucene (또는보다 구체적으로 Compass)을 사용하여 포럼에 스레드를 기록하고 토론 뒤에 키워드를 추출 할 방법이 필요합니다. 즉, 누군가가 만드는 모든 항목을 색인화하고 싶지는 않지만 특정 컨텍스트와 관련이있는 '키워드'목록을 가지며 항목이 키워드와 일치하고 임계 값 이상인 경우 인덱스에 대한 이러한 항목.인덱싱하지 않고 lucene 토큰 쿼리

나는 분석기의 힘을 사용하여 물건을 벗겨 내고 마술을 할 수 있기를 원하지만 키워드와 일치시키기 위해 분석기에서 토큰을 반환하고 특정 단어가 나오는 횟수를 계산합니다. 언급되고있다.

모든 항목의 색인 생성에 오버 헤드가 발생하지 않고 분석기에서 토큰을 얻을 수있는 방법이 있습니까?

나는 모든 항목을 저장하고 내 키워드 목록을 사용하여 검색을 수행 한 다음 해당 문서를 지속성 관리자와 병합하여 실제로 관련 항목을 저장하도록 RAMDirectory를 유지해야한다고 생각했습니다.

+0

아래 답변 중 어떤 것이 좋을지 ... 비슷한 문제가 있습니다. – andy

답변

2

올바른 경로에 있습니다. RAMDirectory를 사용하여 각 문서의 색인을 작성한 다음 해당 문서에서 관련 키워드가 있는지 확인할 수 있습니다. 아니요 인 경우 해당 문서를 버립니다. 그렇지 않으면 영구/기본 색인에 추가합니다.

모든 문서를 메모리에 저장할 필요는 없습니다. 불필요하게 많은 메모리를 소비합니다.

+0

+1 감사합니다. 아래 답변에 대해 어떻게 생각하십니까? – andy

2

RAMDirectory를 완전히 사용하여 건너 뛸 수 있어야합니다. StandardAnalyzer에 직접 전화하여 토큰 목록 (키워드라고도 함)을 다시 전달할 수 있습니다.

StandardAnalyzer analyzer = new StandardAnalyzer; 
TokenStream stream = analyzer.tokenStream("meaningless", new StringReader("<text>")); 
while (true) { 
    Token token = stream.next(); 
    if (token == null) break; 

    System.out.println(token.termText()); 
} 

더 나은 아직, 당신의 키워드를보고 자신의 필터를 사용하여 자신의 분석기 (그들은 기존의 소스 코드를 살펴 가지고 열심히하지 않은) 물품.

+0

+1 정보가 더 이상 필요하지 않으면 색인 생성에 도움이되지 않습니까? – andy

+1

아, 제 잘못 ... 토큰을 만들기 전에 실제로 색인을 생성해야합니까? 나는 분석기에 텍스트를 던져서 토큰을 반환하는 방법이 있는지 궁금합니다. – andy

관련 문제