0

Spring ベースの Web サイトを開発しており、検索エンジンを使用して「カスタマイズされた」検索結果を提供する必要があります。SolrまたはElasticを検討しています。

これが「カスタマイズ」の意味です。

検索対象の 2 つのフィールド A と B があるとします。

2 人の訪問者がいて、彼らの活動を追跡することで彼らのプロファイルを作成できるとします。訪問者 1 が (A の) 値 a と訪問者 2 (B の) 値 b を常に使用または検索しているとします。ここで、両方の訪問者が A=a OR B=b を満たすレコードを検索します。

Solr または Elastic は、訪問者 1 と 2 に対して異なる順序で結果を返すことができますか? たとえば、A=a の結果は、訪問者 1 の B=b の結果よりも進んでいるということですか? 訪問者 2 の場合はその逆ですか?

検索エンジンに信号を渡して、フィールドの 1 つにより多くの「重み」を与えるようにエンジンに依頼する必要があることを理解しています。

ありがとうございます。

4

1 に答える 1

1

クエリを実行しているユーザーに応じて、クエリを実行しているフィールドに異なる重みを付ける必要があるようです。

たとえば、 elasticsearch でmulti_matchクエリを使用すると、複数のフィールドを検索して、それらに異なる重みを与えることもできます。fieldAより重要な例を次に示します。

{
  "multi_match" : {
    "query" : "this is a test",
    "fields" : [ "fieldA^3", "fieldB" ]
  }
}

こうすることで、スコアはクエリに適用した重みの影響を受け、スコア (デフォルト) で並べ替えると、期待どおりの順序で結果が得られます。ドキュメントや実行するクエリによっては、フィールドに割り当てられた重みを微調整する必要があります。

于 2013-05-10T19:31:25.867 に答える