我有一个带有“名称”和“描述”的索引。我正在对索引运行 bool(boolean) 查询。有时,该术语同时出现在名称和描述字段中,在这种情况下,名称和描述中都包含搜索词的文档的得分要比具有名称或具有搜索词的描述的文档更高。
我要给他们评分。因此,具有名称或描述且具有该术语的文档的得分与具有在名称和描述中均具有搜索术语的文档的得分相同。
可能吗?
这是示例:
{
"name": "xyz",
"description": "abc xyz"
},
{
"name": "abc",
"description": "xyz pqr"
},
{
"name": "xyz",
"description": "abc pqr"
}
如果用户搜索术语“xyz”,我希望以上所有三个文档具有相同的分数。
由于所有文档在名称或描述中或在两个字段中均包含术语“xyz”。
最佳答案
您可以为此使用Filtered Query。过滤器未评分。请参阅下面的查询以搜索"xyz"
:
POST <index name>/<type>/_search
{
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"should": [
{
"term": {
"name": "xyz"
}
},
{
"term": {
"description": "xyz"
}
}
]
}
}
}
}
关于elasticsearch - 或与elasticsearch查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16529803/