我正在使用Elasticsearch构建一个小型搜索应用程序,并试图找出如何使用多词(短语)建议来构建自动完成功能。我有它的工作...有点...如何生成多词搜索建议
我主要是单个单词的建议,但是当我点击空格键 - 它杀死的建议。
例如,如果我输入“fast”,它会正常工作,如果我输入“fast” - 停止出现建议。
我使用的是Edge N Grams
和match_phrase_prefix
,并按照示例here和here构建它。对于match_phrase_prefix
中的_all
字段,只是使用include_in_all:false来取消除标题和内容以外的所有字段。我开始认为它仅仅是因为我正在测试一个小数据集,并且没有足够的标记术语来产生多词建议。请看下面的相关代码,并告诉我哪里出错了,如果有的话?
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": "1",
"max_gram": "20",
"token_chars": [
"letter",
"digit"
]
}
},
"analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"asciifolding",
"autocomplete_filter"
]
},
"whitespace_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"asciifolding"
]
感谢似乎分裂正是我所期待的 – user3125823