基于用户在UI上搜索的文本,我在搜索条件中添加了更多的搜索词。所有这些工作正常,但是我无法获得正确的排序结果。
我的期望是按以下顺序对结果进行排序:
- 顶部的结果应基于用户实际输入的搜索词。
- 后跟我在代码中添加的其他搜索词的结果。
这种排序是不可能的。根据官方文件,
排序是在每个字段级别定义的...
因此,您无法按搜索词对结果进行排序。
在查询query string
的情况下,您可以提升用户实际输入的术语,因此具有此类术语的文档将更具相关性,并且默认情况下显示高于搜索结果中的其他文档。但这绝对不是排序。
我认为您正在寻求控制 ElasticSeach 中搜索结果的所谓"相关性"的方法(默认情况下,结果按相关性排序(。 其中有几个,您必须进行实验以查看哪一个适合您的需求。 它们中的每一个都对结果的正常相关性分数应用一个提升因子:
- 提升全文查询中的特定术语,例如
快速^2 狐狸
将使包含"快速"的文档更具相关性
- 提升查询的子句,例如
GET /_search
{
"query": {
"query_string" : {
"query" : "(new york city) OR (big apple)",
"default_field" : "content",
"boost": 2.0
}
}
}
- 使用单独的查询进行显式的正提升和负提升,例如
{
"query": {
"boosting": {
"positive": {
"term": {
"text": "apple"
}
},
"negative": {
"term": {
"text": "pie tart fruit crumble tree"
}
},
"negative_boost": 0.5
}
}
}