是否有选项可以使ElasticSearch对搜索到的单词在文档中看起来更接近的问题进行排名更高的查询?
在某些情况下,我正在研究一种法律研究产品。通常,有人会通过简单地将这些单词放入我们的搜索框来搜索“虚假声明法”等概念。但是,这些词在我们的数据库中非常普遍,包括关于完全不相关的文档,因此结果令人失望。
如果我能告诉ElasticSearch在其评分算法结果中考虑到附近的单词,那将是惊人的。
答案 0 :(得分:2)
无论你现在有什么疑问,都必须有能够计算分数的东西,否则你就不会对得分更高或更低感兴趣。
拿走现有的所有内容并将其放入bool
should
。添加另一个should
语句,该语句应使用match_phrase
with slop
s或其中一个span queries。
例如:
{
"query": {
"bool": {
"should": [
{
"query_string": {
"default_field": "some_text_field",
"query": "False Claims Act"
}
},
{
"match_phrase": {
"some_text_field": {
"query": "False Claims Act",
"slop": 0
}
}
}
]
}
}
}
每一项都应该有助于文件的最终得分。上面的查询会通过考虑那些匹配False Claims Act
更好的文档来“提升”最终得分。
slop
表示您希望这些词语“接近”。