Lucene 분석기 비교


104

누군가 Lucene 내의 다른 분석기의 차이점을 설명해 주시겠습니까? maxClauseCount 예외가 발생하고 KeywordAnalyzer를 사용하여이 문제를 피할 수 있다는 것을 이해하지만 분석기 주변의 문제를 이해하지 않고 StandardAnalyzer에서 변경하고 싶지 않습니다. 매우 감사합니다.

답변:


209

일반적으로 Lucene의 모든 분석기는 토크 나이저 + 형태소 분석기 + 불용어 필터입니다.

Tokenizer 는 텍스트를 청크로 분할하며, 다른 분석기는 서로 다른 토크 나이저를 사용할 수 있으므로 서로 다른 출력 토큰 스트림 , 즉 텍스트 청크 시퀀스를 얻을 수 있습니다 . 예를 들어, 텍스트를 전혀 분할하지 않고 모든 필드를 단일 토큰으로 사용 KeywordAnalyzer한다고 언급했습니다 . 동시에 (및 대부분의 다른 분석기)는 공백과 구두점을 분할 점으로 사용합니다. 예를 들어 "I am very happy"라는 문구의 경우 [ "i", "am", "very", "happy"] (또는 이와 유사한 것) 목록이 생성됩니다. 특정 분석기 / 토케 나이저에 대한 자세한 내용은 Java Docs를 참조하십시오 .StandardAnalyzer

형태소 분석기 는 문제의 단어의 기초를 파악 하는 데 사용됩니다. 사용되는 언어에 따라 크게 다릅니다. 예를 들어, 영어로 된 이전 문구의 경우 [ "i", "be", "veri", "happi"]와 같은 것이 생성되고 프랑스어의 경우 "Je suis très heureux"는 일종의 프랑스어 분석기 (예 : SnowballAnalyzer, 초기화 됨)가 생성됩니다. with "French")는 [ "je", "être", "tre", "heur"]를 생성합니다. 물론, 한 언어의 분석기를 사용하여 다른 언어의 텍스트를 스템하는 경우 다른 언어의 규칙이 사용되어 형태소 분석기가 잘못된 결과를 생성 할 수 있습니다. 모든 시스템에서 실패하는 것은 아니지만 검색 결과가 정확하지 않을 수 있습니다.

KeywordAnalyzer형태소 분석기를 사용하지 않으며 수정되지 않은 모든 필드를 전달합니다. 따라서 영어 텍스트에서 일부 단어를 검색하려는 경우이 분석기를 사용하는 것은 좋지 않습니다.

불용어 는 가장 빈번하고 거의 쓸모없는 단어입니다. 다시 말하지만, 언어에 크게 의존합니다. 영어의 경우 이러한 단어는 "a", "the", "I", "be", "have"등입니다. 불용어 필터는 검색 결과의 노이즈를 줄이기 위해 토큰 스트림에서 해당 단어를 제거하므로 마지막으로 "I 'm very happy'와 함께 StandardAnalyzer[ "veri", "happi"] 목록으로 변환됩니다.

그리고 KeywordAnalyzer다시 아무것도하지 않습니다. 따라서 KeywordAnalyzerID 또는 전화 번호와 같은 항목에 사용되지만 일반적인 텍스트에는 사용되지 않습니다.

그리고 당신의 maxClauseCount예외에 관해서는, 나는 당신이 검색에서 그것을 얻는다고 믿습니다. 이 경우 검색 쿼리가 너무 복잡하기 때문일 수 있습니다. 여러 쿼리로 분할하거나 더 낮은 수준의 기능을 사용하십시오.


1
@ffriend : 나는 Stemmer (눈덩이 또는 다른 알고리즘 사용)가 am-> Lemmatizer의 작업이기 때문에 변환 할 수 있다고 생각하지 않습니다. 여기에서 확인할 수 있습니다. snowball.tartarus.org/demo.php
Tho

그렇다면 Tika는 어디에 적합합니까? 기술적으로 분석기 아닙니까?
anon

1
@anon : Tika는 몇 가지 주요 기능이있는 별도의 프로젝트입니다. Tika 파서를 의미한다고 가정하면 Tika는 바이트 스트림을 가져와 텍스트 + 메타 데이터를 출력하는 반면 Lucene 분석기는 텍스트를 가져와 처리 된 토큰 스트림을 출력한다고 가정합니다. 예를 들어 먼저 Tika를 사용하여 PDF 또는 XML 파일을 구문 분석하여 "title", "author"및 "text"와 같은 필드가있는 문서를 생성 한 다음 Lucene 분석기로 이러한 필드의 일부 또는 전체를 분석 할 수 있습니다.
ffriend 2015-01-31

"매우"와 "행복"이 거절 된 단어가 아닌데 왜 "veri"와 "happy"로 변모할까요? 비슷하게 들리기 때문에 i <-> y 차이점과 일치합니까?
oguzalb

0

내 관점에서 나는 StandAnalyzerSmartCNAnalyzer. 중국어로 텍스트를 검색해야하므로. 분명히 SmartCnAnalyzer중국어를 다루는 것이 더 낫습니다. 침엽수 목적으로 가장 적합한 분석기를 선택해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.