簡體   English   中英

使用Elasticsearch對所有多匹配查詢字段進行通用IDF評分

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

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