[英]common idf scoring across all multimatch query fields with elasticsearch
設置以下文檔 :
curl -XPUT "http://localhost:9200/test/books/1" -d '{
"title": "Bacon Dishes",
"tags": ["bacon", "cooking"]
}'
curl -XPUT "http://localhost:9200/test/books/2" -d '{
"title": "Beyond Bacon",
"tags" : ["cooking"]
}'
和以下查詢 :
curl -XGET "http://localhost:9200/test/books/_search?pretty=true&search_type=dfs_query_then_fetch" -d ' {
"explain" : true,
"query" : {
"multi_match" : {
"query" : "bacon beyond",
"fields" : ["title^2","tags^1"]
}
}
}'
解釋計划顯示,使用idf(docFreq=2, maxDocs=2)
計算標題的分數,而使用idf(docFreq=1, maxDocs=2)
計算標簽的分數(如果存在idf(docFreq=1, maxDocs=2)
。
當有100本書,其中50本書的標題中帶有“培根”,而只有1本書的標簽中具有“培根”,而標題中卻沒有“培根”時,這將成為一個問題(至少對我們而言)。 使用上面的查詢,標簽中帶有“培根”的文檔將獲得更高的評分,盡管標題得到了提升。
我希望第一個示例中的tag和title字段的得分計算為:
idf(docFreq=2, maxDocs=2)
也就是說,我希望分數計算在多重匹配查詢的所有字段中使用術語的docFreq。 這可能嗎?
我只是增加標題的力度,足以使其比標簽字段更重要。
我不認為您想實現自己的自定義相似性並將其插入elasticsearch。
請記住,向字段添加適當的權重並進行增強是微調,這需要通過真實的索引,真實的數據和真實的查詢來實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.