2

インデックスを検索する前に類似度を変更したい。私がすることは:

QueryParser parser = new QueryParser(Version.LUCENE_43, "field", standarAnalyzer);
System.out.println("similarity before: " + parser.getFuzzyMinSim());
parser.setFuzzyMinSim(0.6f);
System.out.println("similarity after: " + parser.getFuzzyMinSim());
Query query = parser.parse(inputString); // inputString is given by the user
System.out.println("Querystring: " + query.toString());

そして今、inputString = "something~" の場合、この出力が得られます

similarity before: 2.0
similarity after: 0.5
Querystring: field:something~2 // Why 2!?

私の質問:

  1. 類似度が最初に 2.0 に設定されているのはなぜですか (デフォルトでは 0.5 だと思っていました)。
  2. setFuzzyMinSim メソッドを呼び出した後も 2.0 のままなのはなぜですか?
4

1 に答える 1

4

FuzzyQueryは Lucene バージョン 4 で大幅に変更されました。「~」の後の数字は最大編集距離であり、最小類似度ではありません。が. FuzzyMinSim_ StandardQueryParser_ 4.x でDefaultFuzzyMinSimFuzzyQueryを使用することは推奨されないことに注意してください。

デフォルトの最大編集距離は 2 です。2 を超える編集距離はFuzzyQueryクラスでサポートされていないため、標準のクエリ パーサーではサポートされていません。

于 2013-08-19T16:17:58.293 に答える