基于搜索字符串的弹性搜索排序



基于用户在UI上搜索的文本,我在搜索条件中添加了更多的搜索词。所有这些工作正常,但是我无法获得正确的排序结果。

我的期望是按以下顺序对结果进行排序:

  1. 顶部的结果应基于用户实际输入的搜索词。
  2. 后跟我在代码中添加的其他搜索词的结果。

这种排序是不可能的。根据官方文件,

排序是在每个字段级别定义的...

因此,您无法按搜索词对结果进行排序。

在查询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
}
}
}

相关内容

  • 没有找到相关文章

最新更新