2015-01-12 5 views
0

검색 할 때 여러 부울 값으로 여러 필드를 쿼리하는 시스템이 있습니다. Umbraco (6.x) 사이트이기 때문에 Lucene.NET 2.9.4에서 실행됩니다. CMS가 사용하는 Lucene.NET의 버전입니다.Lucene.NET 2.9 - MultiFieldQueryParser, 부스팅 된 필드, 형태소 및 접두사

고객이 형태소 분석을 추가 할 수 있는지 물어 봤기 때문에 Standard/Lowercase/Stop/PorterStemmer를 사용하는 맞춤 분석기를 작성했습니다. 줄기 필터가 잘 작동하는 것 같습니다.

그러나 이제 MultiFieldQueryParser에서 새 분석기를 사용하려고 시도했지만 아무 것도 찾지 못했습니다.

MultiFieldQueryParser는 스텀 워드를 포함하는 검색어를 반환합니다. 내가 "그림"을 검색하는 경우, 나는 그것이 반환하는 쿼리의 일부로 것을 얻을 것은 :

올바른 필드를 검색하고 올바른 부스트를 적용하지만,에 정확한 검색을 수행하려고 즉

keywords:figur^4.0 Title:figur^3.0 Collection:figur^2.0

unstemmed 단어를 포함하는 인덱스에 용어를 줄였다.

실제로 필요한 것은 MultiFieldQueryParser가 PrefixQuery 유형의 절 목록을 반환하는 것입니다. 그래서 출력 난 그냥 파서에 그 기간의 끝에 와일드 카드를 추가하고 공급하려고하면 형태소 분석기에 걷어차하지 않습니다

keywords:figur*^4.0 Title:figur*^3.0 Collection:figur*^2.0

같은 쿼리가. 즉,이 빌드거야 "figure *"를 찾는 쿼리.

MultiFieldQueryParser 부스트와 접두사 쿼리를 결합하는 방법이 있습니까?

답변

1

맞춤 분석기를 사용하여 다시 색인해야합니다. 쿼리 시간에만 형태소 분석기를 적용하는 것은 쓸모가 없습니다. 와일드 카드를 사용하여 무언가를 함께 뭉개 버릴 수도 있지만, 추악하고 신뢰할 수없는 흙으로 남을 것입니다.

+0

전화하세요. 비록 추악한 신뢰할 수없는 괴롭힘에 관한 약간의 생각은 단지 의견 일뿐입니다. 그것은 손실이 있습니다. 그리고 제 의뢰인이 내일 다시 저에게 오는 것을 상상할 수 있습니다. "나는이 두 가지를 할 때 어떻게 될지 어떻게 말할 것인가? 서로 다른 단어, 일치하는 단어가 항상 먼저 나오는 것은 아닙니다. 해결할 수 있습니까? " 우리는 자연 언어를 다루고 있습니다. 추악하지 않은 영어. :) –

+0

글쎄, 나는 그것의 추함이 내 의견이라고 생각해. 추가 검색 결과는 제쳐두고 비 신뢰 성을 명확하게 소개하지만, 음모 나 하늘 같은 단어를 검색 할 수는 없습니다 (예 : "conspiraci", "sky"). 그리고 쿼리 파서 생성 쿼리를 분석 후 와일드 카드 집합으로 재 작업하려고하면 특히 중첩 된 부울 쿼리 등을 도입 할 때 성가신 경향이 있습니다. – femtoRgon