1

多数のフィールドを持つ Lucene インデックスがあります。一致するフィールドの数でランク付けされたドキュメントを検索し、一致するフィールドの数を結果に示すために使用したいと思います。

私の特定の例では、Lucene インデックスのドキュメントは Web ページを表し、フィールドはタイトル、メタディスクリプション、h1 テキストなどです。

「自転車」などの用語を検索すると、任意のフィールドに「自転車」という単語が含まれるすべてのドキュメントが返されます。ただし、「自転車」というキーワードを含むフィールドの数を示す関連性スコアが必要です。たとえば、タイトルとメタディスクリプションに「自転車」が含まれているドキュメントを、タイトルだけが「自転車」のドキュメントよりも上位にランク付けしたいと考えています。また、最初のドキュメントには 2 つの一致が含まれ、2 番目のドキュメントには 1 つの一致のみが含まれていると判断できるようにしたいと考えています。特定のフィールドでのキーワードの頻度は問題ではありません。私はそれが一致したかどうかを知りたいだけです。

a を使用して 1 つのフィールドで一致を検索できることはわかっていBooleanQueryます。これらを組み合わせて、複数のフィールドで AND または OR を実行できますが、任意のフィールドに一致するドキュメントを返すクエリを実行する方法がわかりません。一致するフィールド数の指標。

どんな助けでも大歓迎です!

4

1 に答える 1

1

Luceneでは、フィールドの検索は、のようなクエリを作成することで実行できますtitle:a web page。上記のように、n個のフィールドに対してクエリq1、q2、..qnを作成するとします。これらのクエリを使用して検索すると、リストl1、l2、..lnに保存されているドキュメントIDが返されます。ここで、それらをセットSにマージします。Sの各アイテムについて、そのアイテムが属するリストの数(またはリスト)を確認します。私がそれを正しく理解していれば、それはあなたの問題を解決するはずです。

于 2013-02-19T03:19:42.533 に答える