我正在尝试进行弹性搜索自动完成并建议。我将用于搜索公司名称。它工作正常,但建议只在公司名称的开头执行。 (E.G. Sports Company inc。仅在搜索开始时显示为'sports'而非'company')。我已经读过自动完成是针对前缀的,但我希望它能用于所有单词。
我的问题是如何使用;建议,自动完成,过滤器,令牌化器,让它工作。我知道他们都会对结果产生影响,但是什么有更多,什么有更少。我发现文档很难理解。
我也想知道搜索公司名称与前缀的所有单词的最佳方式。
设定:
{
"settings" : {
"analysis" : {
"char_filter" : {
"-_to_space" : {
"type" : "mapping",
"mappings" : [ "-=>", ".=>" ]
}
},
"filter" : {
"company_stopwords" : {
"type" : "stop",
"stopwords" : [ "the", "a", "." ]
}
},
"analyzer" : {
"company_analyzer" : {
"type" : "custom",
"char_filter" : [ "html_strip", "-_to_space" ],
"tokenizer" : "standard",
"filter" : [ "lowercase", "company_stopwords" ]
}
}
},
"number_of_replicas" : 0
}
}
映射
{
"properties" : {
"name" : {
"type" : "string"
},
"suggest" : {
"type" : "completion",
"index_analyzer" : "simple",
"search_analyzer" : "company_analyzer",
"payloads" : "true"
},
"activated" : {
"type" : "integer"
},
"banned" : {
"type" : "integer"
},
"disabled" : {
"type" : "integer"
}
}
}