现在的情况
我正在使用弹性搜索的渗透功能。它运行良好 - 我为新文档获取匹配的 percolate-ids,并且基本上可以构建反向搜索。到目前为止一切都很好。
问题
问题来了:我想要一个分数来表示给定文档与过滤器查询的匹配程度(正是普通查询给我的分数)。为此,我添加了track_scores
,但没有运气。
我在以下文档中找到了这个track_scores
:
...分数基于查询,表示查询如何与渗透查询的元数据匹配,而不是被渗透的文档如何与查询匹配...
我想要/需要的甚至可能吗?
显示问题的示例
这是一个演示问题的示例(取自elasticsearch.org)。在这里,在 percolate-response 中返回的分数总是1.0
,无论输入文档如何:
//Index the percolator
curl -XPUT 'localhost:9200/my-index/.percolator/1' -d '{
"query" : {
"match" : {
"message" : "bonsai tree"
}
}
}'
渗透第一个文件:
curl -XGET 'localhost:9200/my-index/message/_percolate' -d '{
"doc" : {
"message" : "A new bonsai tree in the office"
},
"track_scores" : "true"
}'
//...returns
{"took": 1, "_shards": {
"total": 5,
"successful": 5,
"failed": 0
}, "total": 1, "matches": [
{
"_index": "my-index",
"_id": "1",
"_score": 1.0 <-- Score
}
]}
渗透第二个(不同的)一个:
//Percolate a second one
curl -XGET 'localhost:9200/my-index/message/_percolate' -d '{
"doc" : {
"message" : "A new bonsai tree in the office next to another bonsai tree is cool!"
},
"track_scores" : "true"
}'
//...returns
{"took": 3, "_shards": {
"total": 5,
"successful": 5,
"failed": 0
}, "total": 1, "matches": [
{
"_index": "my-index",
"_id": "1",
"_score": 1.0 <-- SAME Score, but different document (other score needed here!)
}
]}
我需要什么
我想0.8
为第一个文档和0.9
第二个文档打分。但是他们不能像这里一样获得相同的分数。我怎样才能达到我想要的?
非常感谢您的任何想法和帮助。