2011-08-19 3 views
0

나는 solr을 사용하여 사이트의 색인을 생성했습니다. 형태소 분석이 활성화되어 있지 않으면 매우 잘 작동합니다. 그러나 형태소 분석을 사용하면 solr은 단어의 루트를 검색 할 때 어떤 조회도 반환하지 않습니다. 나는 스웨덴어 형태소 분석을 사용한다.형태소 분석을 사용할 때 루트 단어를 검색하면 아무런 의미가 없습니다.

예를 들어, support을 검색하면 형태소 분석을 사용하지 않는 경우 조회수가 발생합니다. 형태소 분석을 사용하면 support을 검색하면 조회가 발생하지 않습니다. 그러나 supporten을 검색하면 support과 일치하는 검색 결과가 표시됩니다.

쿼리를 디버깅하여 단어가 support에서 suppor으로 바뀌는 것을 볼 수 있습니다 (하지만 그 방법은 정확하지 않지만 중요하지 않습니다). 그러나 단어가 suppor으로 줄기 때문에 원래 검색어와 일치하는 항목을 검색하려고합니다.

감사합니다.

답변

0

AFAIK은 ... 당신이 solr.SnowballPorterFilterFactory을 사용하고 있는지 나는 가정

인한 경우 원래의 단어를 유지하는 방법이 없습니다. Snowball 알고리즘이 너무 공격적입니다.

Hunspell stemmer 또는 solr.SwedishLightStemFilterFactory을 사용해보십시오.

0

"지원 지원 *"또는 "지원 지원 ~"으로 쿼리를 다시 포맷하면 쉽게 해결할 수 있습니다. *는 와일드 카드 일치이고 ~는 Lucene 구문을 사용하여 퍼지 매칭입니다. 와일드 카드 및 퍼지 검색을 수행 할 필요성에 대해 언급하지 않았지만 이러한 상황에서 검색어에 대한 형태소 분석이 적용되지 않으므로 "지원"이 보존됩니다. 그리고 첫 번째 단어에는 여전히 형태소 분석이 적용되므로 두 가지 결과가 모두 반환됩니다. 또한 퍼지 검색을 사용하면 사용자 쿼리의 오타가 줄어들어 추가 이점이 있습니다.