1

edisMAxクエリパーサーのようにMAXを取得するのではなく、複数のフィールドスコアの加重スコアを合計して、各ドキュメントの最終スコアを計算したいと思います。

したがって、タイトルと説明の3つのフィールドがある場合、最終的なスコアは次のようになります。

FINAL SCORE = w1 * title_field_score +(1-w1)* description_field_score +(1-w1 -w2)* description_field_score

ここで、w1、w2は0から1までの値にすることができます。

類似性のないデフォルトの類似性により、このランキングが得られます。これは、次の検索ハンドラーを使用します。

  <requestHandler name="/select" class="solr.SearchHandler">
 <lst name="defaults">
   <str name="echoParams">explicit</str>
   <int name="rows">10</int>
   <str name="df">detail_page_text</str>

   <!-- Query settings -->
   <str name="defType">edismax</str>
   <str name="qf">
      job_title description detail_page_text
   </str>

今、以下のようにネクタイを使用することで、理想的なランキングを得ているようです。

<str name="tie">1.0</str>

したがって、私の質問は、tieパラメーターの使用が、すべてのフィールドに等しく(または追加の重みを使用して)基づいて、重み付けされたランキングスコアを達成するための正しい方法であるかどうかです。

どんなヒントでも大歓迎です!乾杯

4

2 に答える 2

3

ディスマックスタイは、加重スコアリングに使用する必要があるパラメーターです。

引き分け = 1.0 -> すべての個別スコアの合計。

19.07% 0.69268036 (MATCH) **max plus 1.0 times** others of:
    1.96% 0.07105611 detail_page_text:senior
    4.16% 0.15101658 description:senior
    12.96% 0.4706077 job_title:senior

引き分け = 0.0 -> 個々のスコアの最大値。

17.83% 0.7043001 (MATCH) **max** of:  
    - 0.028197879 detail_page_text:senior  
    - 0.04566047 description:senior  
    - 17.83% 0.7043001 job_title:senior
于 2013-02-01T04:56:58.633 に答える
1

実際には、 を使用すると、tie=1.0かなりうまく機能するはずです。それが標準の lucene クエリと異なるかどうかはわかりません (特に、coordの影響が異なるかどうかは疑問です)。

意味的には少し厄介なようです。dismaxデフォルトでoredismaxクエリを使用しているようです。deftype=lucene&query=fooデフォルトの Lucene クエリを使用するように設定すると、 ( here を参照)のように、より直接的なアプローチのように見えます

于 2013-01-26T17:24:02.513 に答える