2011-09-20 102 views
1

我想測試SOLR爲我的應用程序找到字符串之間的百分比匹配。Solr Lucene模糊匹配返回錯誤結果

我現在只爲first_name匹配配置了solr和定義的模式,我在schema(solr 3.3)中使用了text_general數據類型。

在我的文檔/ CSV我不停詞「rushik」和Solr的查詢我試圖用「rushk」搜索 - 故意去掉「我」

與Levenshtein算法

理想的距離是字符串之間上面的兩個1因此字符串之間的百分比匹配應該是(1 - distance/maxLen(string1,string2)),它是(1 - 1/6)= 0.83 - 這意味着兩個字符串都是83%的匹配。

但是在solr它的匹配,直到我給查詢rushk〜0.79 - 當我使用〜0.80,0.81等它與文檔不匹配時。

不知道我的levenshtein字符串匹配的計算是不正確的,或者我怎麼確定問題出在哪裏。

任何幫助這裏是高度讚賞。

謝謝, Rushik。

回答

0

模糊百分比計算進行模糊查詢 -

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

在你的情況下,將1 - 1/5 = 0.8 因此,這似乎是有效的。

+0

感謝Jayendra,但是在這個計算中我發現使用MAX Length的ppl的大多數地方,你知道爲什麼SOLR使用MIN設置的確切原因嗎? – Rushik

+0

不確定。你可以查看source @ http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FuzzyTermsEnum.java – Jayendra