0
用下面文件設置:共同IDF得分與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)
進行計算。
如果有100本書的標題中有50個「培根」,而標籤中只有1個「培根」,但標題中沒有「培根」,這會成爲一個問題(至少對我們來說)。使用上面的查詢,儘管標題被提升,但標籤中帶有「燻肉」的文檔將得分更高。
我想對於分數計算兩個在第一個例子中的標籤和標題字段是:
idf(docFreq=2, maxDocs=2)
也就是說,我想得分計算使用期限的docFreq所有多匹配查詢中的字段。這可能嗎?
我只會增加你給標題的提升,足以讓它比標籤更重要。我不認爲你想要實現自己的自定義相似性,並將其插入elasticsearch :) – javanna
你是對的,我絕對不想做這樣的事情!你會碰巧知道這裏的任何選項/設置是否啓用我正在尋找的行爲? http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules-similarity.html – andy
沒有,你就必須使標題重高,僅此而已。足夠高以至於它可以使其與標籤相比較重要。當然,這是微調,這需要有一個真正的指數,真實的數據,實際的查詢... – javanna