ElasticSearch使用多字段为'name'索引我的业务文档,这样我可以权衡不同程度的名称匹配(完全匹配,多个单词之一等)。这是我的映射
的片段"name" : {
"type" : "multi_field",
"fields": {
"name": {"type" : "string", "store" : "yes", "index_analyzer" : "AutoCompleteIndexAnalyzer", "search_analyzer" : "AutoCompleteSearchAnalyzer"},
"exact_match": {"type" : "string", "store" : "yes", "index_analyzer" : "ExactMatchNameIndexAnalyzer", "search_analyzer" : "ExactMatchNameSearchAnalyzer"},
"auto_name": {"type" : "string", "store" : "yes", "index_analyzer" : "keyword", "search_analyzer" : "keyword"},
}
},
由于它是一个多字段,我只提供一次值 - ES只是多次分析它。
所以我完全不知道“不间断”子字段如何获得完全不正确的值,而“名称”子字段是正确的。我无法理解为什么完全匹配不起作用,所以我写了一个脚本字段来给我搜索结果中的'exact_match'标记化:
"exact_match_tokenized_name": [
"santininewyorkstyledeli"
],
"name": "Sal NY Pizza",
"name.auto_name": "Sal NY Pizza"
如果有人对此有任何想法,我真的很感激。
谢谢!