2011-09-20 6 views
3

Solr과의 퍼지 일치를 실험하려고합니다.퍼지 일치를위한 Solr/lucene 용어의 최대 문자

"MYNEWORGANIZATION20SEP2011"이라고 언급 한 내 문서의 first_name 필드를 인덱싱했습니다. 실제로 "My New Organization 20-Sep-2011"이었지만 공백과 다른 문자는 제거했습니다.

"MYNEWORGANIZATION20SEP2011"쿼리로 직접 검색하면 위의 단어 (위의 공백없이)가 위 결과 ID로 1 개의 결과를 얻습니다.

하지만이 문자열에서 두 개의 문자를 잘라내어 "MYNEWORGANIZATION20SEP20 ~ 0.8"을 제공하면 쿼리에서 0 개의 결과가 나타납니다. 주 문서 데이터 내 새로운 쿼리 MYNEWORGANIZATION20SEP20 거리에 대한

는 2 - 따라서 % 일치가되어야합니다> 90 % 일치, 따라서 그것은 여전히 ​​내 쿼리에서 내가 80 % 일치를 지정하고 (데이터를 검색해야

. BTW, first_name을 "rushik"과 같은 6-7 문자로 사용하고 "rushik ~ 0.75"와 같은 퍼지 쿼리를 제공하면 검색이 제대로 작동하고 데이터를 반환합니다. "text_general"- solr 사용 3.3.

Solr에서 퍼지 검색에 대한 문자 제한이 있거나 구성 가능할 수 있습니까? 어디에서? - solrconfig.xml에서 아무 것도 변경하지 않은 채 디폴트 solr 구성을 사용 중입니다

공백을 수동으로 제거하지 않고 "My New Organization 20-Sep-2011"문자열을 퍼지 쿼리로 검색하는 더 좋은 방법이 있습니까?

감사합니다. Rushik.

+0

필요한 유사성을 낮추면 결과를 확인할 수 있습니까? – Xodarap

+0

필자는 0.2, 0.1까지 확실히 일치해야하지만 여전히 운이 없음을 확인했습니다. – Rushik

답변

2

필드에서 수행 한 인덱스 시간 분석은 어떻게됩니까?
텍스트 일반 필드는 일반적으로 공백 문자 토큰 화, 중지 단어 필터, 단어 구분 기호 및 소문자 필터를 거치며,이 경우 색인 필드는 완전히 다릅니다.
My New Organisation 2011 년 9 월 20 일 -> MYNEWORGANIZATION20SEP2011에서 색인을 생성하기 전에 완료하셨습니까?
또한 가장 중요한 퍼지 검색은 쿼리 시간 분석을 거치지 않습니다.

문자열이나 소문자로 필드 유형을 사용할 수도 있습니다.

<fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory" /> 
     </analyzer> 
    </fieldType> 

및 테스트 소문자를 사용하여 쿼리하십시오.

+0

예, 전환 2011 년 9 월 20 일 -> MYNEWORGANIZATION20SEP2011이 (입력 된 CSV 파일 수준에서) 색인을 생성하기 전에 완료되었습니다. 현재 필드에 소문자 및 keywordtokenizer 팩토리가 있습니다. 질문은 MYNEWORGANIZATION20SEP2011이 인덱스에 저장되어 있으면 (tokenizer는 위의 문자열에 토큰을 잘 처리 할 수 ​​없습니다), MYNEWORGANIZATION20SEP ~ 0.9와 일치하면 주 문서가 반환되는지 여부입니다. – Rushik

+0

소문자 필터를 적용한 경우 MYNEWORGANIZATION20SEP에 대한 검색 결과를 반환하지 않습니다. 퍼지 검색에 대한 분석이 없습니다. 또한 MYNEWORGANIZATION20SEP의 비율은 .81이므로 0.9도 일치하지 않습니다. 보십시오 myneworganization20sep ~ 0.8 – Jayendra

+0

완벽! 그것은 효과가있다. 나는 분석기에 적용된 소문자 필터를 가지고 있었는데, "myneworganization"을 제공 한 후 퍼지가 제대로 작동했다. 고마워. – Rushik