我有一个数据库,其中包含以下条目
title: This is my awesome title
abstract: A more detailed descriptions of what [...]
Run Code Online (Sandbox Code Playgroud)
我想构建一个与上述文档匹配的 Elasticsearch 查询,例如
awe detai
Run Code Online (Sandbox Code Playgroud)
用单词来说:具有多个搜索词的 multi_matchphrase_prefix 查询。(这旨在用作“键入时搜索”功能。)
我知道如何组合 multi_match 和phrase_prefix,但我不清楚如何对多个搜索词执行此操作。
有什么提示吗?
嗯,有几种方法可以做到这一点
POST stack/autocomplete/1
{
"title": "This is my awesome title",
"abstract": "A more detailed descriptions of what"
}
Run Code Online (Sandbox Code Playgroud)
然后您可以使用带有星号的查询字符串进行搜索,但这里的问题是您需要附加星号来查询
POST stack/autocomplete/_search
{
"query": {
"query_string": {
"fields": [
"title",
"abstract"
],
"query": "awe* detai*"
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想匹配用户查询那么你可以这样使用
POST stack/autocomplete/_search
{
"query": {
"multi_match": {
"fields": [
"title",
"abstract"
],
"query": "awesome tit",
"type": "phrase_prefix"
}
}
}
Run Code Online (Sandbox Code Playgroud)
另一个需要考虑的选择是将nGram与查询字符串一起使用,这样您就不需要修改用户查询“awe* detai*”
| 归档时间: |
|
| 查看次数: |
2100 次 |
| 最近记录: |