您可以使用的一个功能是constant_score
query。例如,如果您想要检测文本中某个特定术语集何时出现,无论它们出现的次数和文档的长度如何,都可以使用constant_score
来包装过滤器或查询,并指定一个固定的评分到符合他们的文件。例如,如果您想查找与“曲轴”,“气缸”和“发动机”等术语相关的文件,并且您希望对术语“气缸”给予更多的重视,而不是“曲轴”,而更多的重量,“曲轴”,而不是“引擎”,你可以使用这样的查询:
GET /_search
{
"query": {
"bool": {
"should": [
{
"constant_score": {
"boost": 3,
"query": { "match": { "fulltext": "cylinder" }}
}
},
{
"constant_score": {
"boost": 2,
"query": { "match": { "fulltext": "crankshaft" }}
}
},
{
"constant_score": {
"query": { "match": { "fulltext": "engine" }}
}
}
]
}
}
}
在这种情况下,你会与所有这方面的配套文件,但你可以通过参数boost
为每个词赋予自己的分数来控制每个词的重要性。
请注意,在这种情况下,“Coordination factor”这个分数也给予了查询条件百分比较高的文档更多权重的分数也被考虑在内。