2011-09-20 13 views
1

文字列間のパーセンテージマッチを見つけるために自分のアプリケーションでSOLRをテストしようとしています。Solr Luceneファジーマッチが間違った結果を返す

私はsolrを設定し、今のところfirst_nameのマッチングのためにスキーマを定義しましたが、私はスキーマ(solr 3.3)でtext_generalデータ型を使用しました。私の文書/ csvファイルで

私は言葉「rushik」を維持し、Solrのクエリで私が「rushk」で検索しようとしています - 意図的に距離は1上記の二つの間の文字列であるレーベンシュタインアルゴリズムで理想的には「I」

を削除したがって、文字列のパーセンテージの一致は、(1 - distance/maxLen(string1、string2))(1 - 1/6)= 0.83である必要があります。つまり、両方の文字列が83%一致します。

しかし、私は〜0.80、0.81などを使用しているときにrushk〜0.79を質問に渡すまでマッチングします。

私の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

わかりません。ソースを確認することができます@ http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FuzzyTermsEnum.java – Jayendra

関連する問題