2012-01-16 11 views
6

索引を作成するとき(照会時ではなく)に特定の用語が重要であると判断することはできますか?索引作成時のLucene用語の使用

例えば同義語フィルタ考えてみましょう:私は最初のドキュメントへの長期的な車両を追加したい「これは素敵な車である」


DOC 1:
DOC 2「これはいい車ですが」そして車という用語を第二の文書 に言いますが、後で索引が車の単語で照会されれば、最初の文書は第二の文書より高いスコアをつけられ、車のために照会されればそれは逆の方法になります。

それぞれのドキュメントにフィールドを追加する前に、フィールドのsetBoostを呼び出すとそのトリックが行われますか?

別のフィールド名に同義語を追加する必要がありますか?

または私は間違った視点からこれを見ていますか?提出された上で、ブーストの設定

おかげ

答えて

4

ので、これはあなたのケースでは動作しません、そのフィールド内のすべての条項に影響を与えます。

しかし、それはLuceneペイロード(すべての用語に設定できるバイト配列)を使用してください。これらを使用して用語に特化したブーストを設定します(たとえば、1号車では車両が0.5になります)。次に、あなた自身のSimilarityを実装し、scorePayload()メソッドをオーバーライドしてそのブーストをデコードしてから、PayloadTermQueryを使用すると、そのペイロード内のブーツに基づいてスコアに貢献することができます。

+0

ありがとうございます、私はここで指摘したクラスとメソッドに基づいて例を探します。 – epeleg

+0

これらのペイロードブーストは、特定のフィールドの用語(「タグ」など)に限定することもできますか? – RalfB

関連する問題