[英]How can I sort Elastic Search query results based on relevancy?
我正在尝试在elastic search
服务器中进行elastic search
。
以下是我的情况:
给搜索API一个术语"Hello World"
,返回所有文档:
我想在一个查询中执行上述操作。 我知道,所有这些都可以使用match_phrase和default_operator进行OR / AND。 但我希望所有这三个都在一个查询中完成。
我希望根据相关性对结果进行排序。 因此,如果文档包含确切的短语,则它是最相关的。如果文档中包含单词(AND),则其中的某些位置具有中等相关性。 如果文档包含至少一个单词(OR),则它最不相关。
到目前为止,弹性搜索是否可行?
这是您可能需要的:
请求参数
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html
{
"query":
{
"query_string" :
{
"query" : "Hello World"
}
}
}
这将获取所有组合:
您想要检查Bool查询以及可能的Boosting Query子句 。
举个例子,你可以做到
{
"query": {
"bool": {
"should": [
{
"match": {
"FIELDNAME": {
"query": "Hello",
"boost": 1
}
}
},
{
"match": {
"FIELDNAME": {
"query": "World",
"boost": 1
}
}
},
{
"match_phrase": {
"FIELDNAME": {
"query": "Hello World",
"boost": 2
}
}
}
],
"minimum_should_match" : 1
}
}
}
这要求您的三个条件之间至少有1个为真( minimum_should_match
)。 满足的条件越多,文档的得分就越高(因此它将首先返回),就像您希望的那样。 你可以boost
条件的重要性,在这里我将整个短语匹配的重要性加倍,但这只是一个例子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.