簡體   English   中英

如何在 elasticsearch 中評估精確匹配高於詞頻的值?

[英]How to value exact match higher than term frequency in elasticsearch?

我有一個包含多個標題字段的索引。

main_title、sub_titles、preferred_titles 等。

這些文本字段還有一個建議字段,我在每個字段中運行一個使用 edge-n-gram 分詞器的自定義分析器,以便我們可以在鍵入時進行搜索。

我想重視完全匹配而不是詞頻。 main_title 中的精確匹配比 preferred_titles 中的精確匹配更有價值。

任何人都知道我怎么能做到這一點? 提前致謝。

我在 must 子句中嘗試了帶有 multi_match_query 的 bool_query。 multi_match 是沒有附加運算符“and”的字段的交叉字段。

我在 should 子句中同時擁有文本字段和建議字段。 每個文本字段都在帶有提升和運算符“and”的 match_query 中。 每個建議字段都在帶有提升和運算符“and”的 match_phrase_query 中。 問題是在分數之上添加了幾個提升,我最終得到了非常誇大的分數。

您可以使用重新評分

重新評分可以幫助提高精度,方法是僅對查詢和 post_filter 階段返回的頂部(例如 100 - 500)文檔進行重新排序,使用輔助(通常成本更高)算法,而不是將成本算法應用於索引中的所有文檔。

一個例子:

{
  "query": {
    ... some query
  },
  "from" : 0,
  "size" : 50,
  "rescore" : {
      "score_normalizer" : {
        "normalizer_type" : "min_max",
        "min_score" : 1,
        "max_score" : 10
      }
   }
}

參考: https://github.com/bkatwal/elasticsearch-score-normalizer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM