[英]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.