【发布时间】:2021-03-06 15:33:28
【问题描述】:
我在 elasticsearch 索引中有一个字段,我正在尝试在其中进行搜索,并且我希望该字段的值以搜索词开头的文档高于该词在某处的文档在一个长短语的中间。例如。: 搜索“lorem”时,
{
"title": "Lorem"
}
应该有更高的分数
{
"title": "The time I said Lorem"
}
或
{
"title": "The Lorem"
}
甚至
{
"title": "Lorem impsum"
}
但是,简单的match、match_phrase_prefix 或query_string 查询通常不是这种情况。
到目前为止,我已经尝试将 prefix 查询与 match 查询结合起来,同时提升前缀,但提升似乎没有像我预期的那样工作,即结果相同,只是提升了 10
...
{
"should": [
{
"prefix": {
"title": {
"value": query,
"boost": 10
}
}
}
{
"match": {
"title": {
"query": query,
"boost": 3,
"fuzziness": "AUTO"
}
}
}
]
}
...
另外,不确定这是否相关,但 title 字段实际上是嵌套的,即 alternative_names.title
弹性搜索有什么优雅的解决方案吗?
【问题讨论】:
标签: elasticsearch