我们对商家名称进行了查询,选择不精确的匹配比完全匹配更好。
例如,对于以下(伪)查询:
unlink('a34160518200001.jpg');
结果:
我们尝试过短语匹配,但这太严格了。我们查看了constant_score包装器,但这消除了我们需要的评分。
在这种情况下,我不相信映射会影响查询,但如果需要,可以提供。
有关如何获得我们想要的行为的任何建议?我们应该考虑不同的查询类型吗?
使用说明功能表明文档的分析方式相同;我认为发生的分数略有不同,因为它们位于不同的分片上。我不明白的是如何在搜索中用一个无关紧要的词来处罚文件。
答案 0 :(得分:0)
Try match_phrase with slop as below:
curl -XPOST "$ELASTICSEARCH_ENDPOINT/$ELASTICSEARCH_INDEX/company/_search" -d '
{
"query": {
"match_phrase": {
"company_name": {
"query": "ACME WIDGETS LLC",
"slop": 5
}
}
}
}
'
答案 1 :(得分:0)
在这种情况下你可以试试这个。 这将给出完全匹配的高分,但也会匹配一个偏差很小的查询。
告诉我你的结果
{
"query": {
"bool": {
"should": [
{
"match_phrase": {
"company_name": {
"query": "ACME WIDGETS LLC",
"slop": 5,
"boost": 5
}
}
},
{
"match": {
"company_name": {
"query": "ACME WIDGETS LLC",
"boost": 1
}
}
}
]
}
}
}