2011-09-20 3 views
1

문자열 간의 퍼센테이지 일치를 찾기 위해 응용 프로그램에서 SOLR을 테스트하려고합니다.Solr Lucene 퍼지 일치가 잘못된 결과를 반환 함

솔라를 구성하고 지금은 first_name과 일치하는 스키마 만 정의 했으므로 schema (solr 3.3)에서 text_general 데이터 유형을 사용했습니다. 내 문서/CSV에서

내가 단어 "rushik"를 유지하고 SOLR 쿼리에 나는 "rushk"로 검색하는 것을 시도하고있다 - 의도적으로 제거 "i"가 levenshtein 알고리즘을 이상적으로

거리 1 위의 두 사이의 문자열입니다 따라서 문자열 사이의 일치율은 (1 - distance/maxLen (string1, string2)) (1 - 1/6) = 0.83이어야합니다 - 이는 두 문자열이 모두 83 % 일치 함을 의미합니다.

하지만 솔직히 내가 rushk ~ 0.79를 제공 할 때까지 일치합니다. ~ 0.80, 0.81 등을 사용할 때 문서와 일치하지 않습니다.

levenshtein 문자열 일치 계산이 잘못되었거나 문제의 위치를 ​​정확히 결정할 수 있는지 확실하지 않습니다.

여기에 도움을 주시면 매우 감사하겠습니다.

감사합니다. Rushik.

답변

0

퍼지 쿼리에 대한 퍼지 비율 계산이다 - 1/5 = 0.8 그래서이 유효한 것 같다 - 귀하의 경우에는

distance = 1 - ((double)dist/(double)Math.min(textlen, targetlen)); 
return (distance > FUZZY_THRESHOLD); 

가 1이 될 것이다.

+0

감사합니다. Jayendra,하지만이 계산에서 MAX Length를 사용하는 ppl을 찾은 대부분의 사람들은 SOLR이 MIN으로 설정되는 정확한 이유를 알고 있습니까? – Rushik

+0

확실하지 않습니다. 소스를 확인할 수 있습니다 @ http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FuzzyTermsEnum.java – Jayendra

관련 문제