下面的查询查找所有包含所有单词“查找”、"for“和”this“的文档:
"query": {
"query_string": {
"query": "look for this",
"default_operator":"AND"
}
}
当这个人发现有这三个词中的任何一个的文件时:
"query": {
"query_string": {
"query": "look for this",
"default_operator":"OR"
}
}
我的问题是如何更改查询,以便执行Google样式的搜索,即它首先列出所有具有所有条件的文档,然后列出有这些条件的文档?
我很感谢你的帮助。
发布于 2016-10-11 02:59:23
在默认情况下,Elasticsearch会给所有条款都存在的文档以更高的分数。您可以使用解释api来查看这一点。
如果您真的想在所有条款都存在的情况下给文档以很高的分数,那么您可以使用bool查询
{
"query": {
"bool": {
"should": [
{
"query_string": {
"default_field": "title",
"query": "look for this",
"default_operator": "AND"
}
},
{
"query_string": {
"default_field": "title",
"query": "look for this"
}
}
]
}
}
}
编辑1
您可以使用功能评分查询来给期望的结果以很高的提升。尝试以下查询
{
"query": {
"function_score": {
"query": {
"bool": {
"should": [
{
"query_string": {
"fields": [
"title"
],
"query": "look for this",
"default_operator": "AND"
}
},
{
"query_string": {
"query": "look for this",
"fields": [
"title"
]
}
}
]
}
},
"functions": [
{
"filter": {
"query": {
"query_string": {
"fields": [
"title"
],
"query": "look for this",
"default_operator": "AND"
}
}
},
"weight": 10
}
]
}
}
}
https://stackoverflow.com/questions/39969311
复制相似问题