尝试获取预测下拉搜索,我如何使搜索始终从左到右开始 比如“I_kimchy park”,“park” 如果我只搜索“par”,我必须得到只有公园作为回报,但在这里我得到两个单词,如何将空白空间视为一个角色
POST /test1
{
"settings":{
"analysis":{
"analyzer":{
"autocomplete":{
"type":"custom",
"tokenizer":"standard",
"filter":[ "standard", "lowercase", "stop", "kstem", "edgeNgram" ,"whitespace"]
}
},
"filter":{
"ngram":{
"type":"edgeNgram",
"min_gram":2,
"max_gram":15,
"token_chars": [ "letter", "digit"]
}
}
}
}
}
PUT /test1/tweet/_mapping
{
"tweet" : {
"properties" : {
"user": {"type":"string", "index_analyzer" : "autocomplete","search_analyzer" : "autocomplete"}
}
}}
POST /test1/tweet/1
{"user" : "I_kimchy park"}
POST /test1/tweet/3
{ "user" : "park"}
GET /test1/tweet/_search
{
"query": {
"match_phrase_prefix": {
"user": "park"
}
}
}
答案 0 :(得分:1)
这是因为您的standard
标记生成器会将您的user
字段拆分为空格。您可以使用Keyword Tokenizer将整个字符串视为单个值(单个标记)。
请注意,此更改可能会影响您使用此字段的其他功能。您可能必须为此添加专用的“非标记化”user
字段。