2010-11-18 10 views
1

私はLuceneの類似度を扱うのに多くの問題があります。私はそれがデフォルト(ドキュメントによれば0.5)とは異なる類似要素を適用したいと思っていますが、動作していないようです。Lucene:検索に最低限必要な類似点を設定する

[tinberland〜0.5]のような必要な類似性係数を明示的に設定するクエリを入力すると(正確に "M"であるが、 "N"でtiNberlandを書き込んだことに気付く) Timberland製造業者の多くの製品。しかし、私がちょうど[tinberland](明示的に定義された類似性因子なし)を入力し、コードを介して類似性を設定しようとすると、機能しません(結果が返されません)。

multiFieldQueryParser.SetFuzzyMinSim(0.5F); 

そして、それはDefaultSimilarityクラスを使用しているので、私は、類似のアルゴリズムを変更していない:

私は類似度を設定するために書いたコードは次のようです。

これは、コードで類似性を適用する正しいまたは推奨された方法ではありませんか?ファジークエリ用の特定のQueryParserはありますか?

ご協力いただきまして誠にありがとうございます。 ありがとうございます!

答えて

0

あなたが設定しているのは、最小類似度です。誰かがfoo~.1を検索した場合、パーサーはそれをfoo~.5に変更します。それは「すべてのクエリをあいまいなクエリに変換する」ということではありません。

あなたはそうのようなMultiFieldQueryParser.getFuzzyQueryを使用することができます。

Query q = parser.getFuzzyQuery(field, term, minSimilarity); 

もちろんのこと意志はあなたがフィールドごとにgetFuzzyQueryを呼び出す必要があります。私は "MultiFieldFuzzyQueryParser"クラスを認識していませんが、それは単にそれらのgetFuzzyQuery呼び出しの束を組み合わせるだけです。

+0

ああ、わかりました。ありがとう! –