0

関連性のない結果が検索で最高の結果として返されるという問題があり、その動作を改善しようとしていますが、実際の方法はわかりません。

約12個のフィールドを持つSearchIndexがあります。document = Trueフィールドは、コンテンツの大部分を配置したテンプレートに裏打ちされたフィールドです。そこにあるもののいくつかは、たとえそれがまだ有用であるとしても、他のものよりもはるかに関連性が低いです。

具体的な例を挙げます。ユーザーが「赤いバラ」を検索した場合、上位の結果として赤いバラを返します。下位の結果が単なるバラまたは単に赤であるか、「バラの赤」と記述されている場合はさらに適切です。 " 色で。

問題は、document = Trueフィールドに、「ローズレッド」と記述されているアイテムが大量にあることです。さらに悪いことに、実際の赤いバラには「赤」と「バラ」が特に近くにありません。これらの値は異なるフィールドから取得されるためです。その結果、完全に無関係な上位数百の結果が得られます。

私たちがやりたいことは次のいずれかです。

A.プライマリドキュメントを検索してから、他の各フィールドを検索し、それに応じてブーストします(ただしハードフィルターは使用しません)。アイテム名の1つに「バラ」という用語が表示され、その属性値の1つとして「赤」が表示される場合、その結果のスコアは高くなるはずです。これにより、関連性でソートされた理論で最適な結果が得られます。

B.すべてのフィールドを一度に検索し、値が「ブーストされた」フィールドのいずれかである場合はブーストします。

フィールドブーストを使用することが答えになるはずですが、フィールドに基づくフィルタリングは厳しい除外であり、関連性スコアにのみ影響を与えるため、それを表現する方法を理解できません。

これらの両方の結果は事実上同じです。Haystackでどちらを実行するかがわかりません。または、生のクエリにフォールバックする必要がある場合は、これを実現するsolrクエリを作成する方法を説明します。

4

1 に答える 1

1

正確なユースケースが得られなかったので、いくつかの指針を示すことができます:-

Solr edismaxクエリパーサーをチェックして、以下を構成できます 。-

  1. 検索したいフィールド-主に結果を選択するため
  2. 関連性のためのフィールドの可変ブースト-フィールドの重要性を判断するには
  3. さまざまな単語の組み合わせに対する可変ブースト(たとえば、単一の単語、フレーズの一致、関連性を判断するためのスロップとのシングルマッチ)
  4. 他の分野に追加のブーストを提供する

これは、結果をフィルタリングし、フィールドと単語の組み合わせの一致に従って結果を並べ替えるのに役立ちます

于 2013-02-17T09:59:05.867 に答える