検索

14.6.5. Lucene のスコアリングカスタマイズ

download PDF
Lucene を使用するとユーザーは、org.apache.lucene.search.Similarity を拡張して、そのフラグ式をカスタマイズできます。このクラスで定義された抽象メソッドは、以下の式の係数と一致し、ドキュメント d のクエリー q のスコアを計算します。
score (q、d)= coord (q、d)queryNorm (q)∑ t in q (tf (t in d)idf (t) 2 t.getBoost ()norm (t、d))
ファクター 説明
tf(t ind) ドキュメント (d) の用語 (t) の周波数係数。
idf(t) 用語の頻度に関する記録。
coord(q,d) 指定されたドキュメントのクエリー用語がいくつあるかに基づくスコア要因。
queryNorm(q) クエリー間でスコアを設定するために使用される正規化の要素。
t.getBoost() フィールドブースト。
norm(t,d) いくつかの (インデックス時間) ブーストおよび長さ要素をカプセル化します。
この式の詳細は、本書の範囲外です。詳細については、Similarity の Javadoc を参照してください。
Hibernate Search では、Lucene の類似性の計算を修正する方法を利用できます。
まず、プロパティーを使用して 類似性 実装の完全に指定されたクラス名を指定することにより、デフォルトの類似性を設定できますhibernate.search.similarity。デフォルト値は org.apache.lucene.search.DefaultSimilarity です。
また、similarity プロパティーを設定して特定のインデックスに使用される類似性を上書きすることもできます。
hibernate.search.default.similarity = my.custom.Similarity
最後に、@Similarity アノテーションを使用してクラスレベルのデフォルトの類似性を上書きできます。
@Entity
@Indexed
@Similarity(impl = DummySimilarity.class)
public class Book {
...
}
たとえば、ドキュメントに用語が表示される頻度は重要ではないと仮定します。用語が 1 回出現したドキュメントは、複数回見つかったドキュメントと同様にスコア付けされる必要があります。この場合、メソッドのカスタム実装tf(float freq)1.0 を返す必要があります。
警告
2 つのエンティティーが同じインデックスを共有する場合、同じ Similarity 実装を宣言する必要があります。同じクラス階層のクラスは常にインデックスを共有するため、Similarity 実装の上書きはできません。
同様に、インデックス設定とクラスレベルの設定で類似性を定義することは、競合が発生するため意味がありません。このような設定は拒否されます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.