使用possessive_english词干的,我有以下分析设置:在Elasticsearch
"settings" : {
"index" : {
"creation_date" : "1469213620697",
"analysis" : {
"filter" : {
"stem_possessive_filter" : {
"name" : "possessive_english",
"type" : "stemmer"
}
},
"analyzer" : {
"stem_analyzer" : {
"filter" : [ "standard", "lowercase", "stem_possessive_filter" ],
"tokenizer" : "standard"
}
}
},
"number_of_shards" : "5",
"number_of_replicas" : "1",
"uuid" : "VQgaaZquQUOqKNYxGPH7cg",
"version" : {
"created" : "2020199"
}
}
},
字符串类型的每个字段具有以下映射:
"field_name" : {
"type" : "string",
"analyzer" : "stem_analyzer",
"search_analyzer" : "standard"
}
我希望能写痴呆在阿尔茨海默或老年痴呆症痴呆短语。结果,我想得到老年痴呆症的痴呆症...。
Multi match query不工作,如果不使用藏:
{'query': {'multi_match': {'query': "dementia in alzheimer", 'type': 'phrase', 'fields': ['_all']}}}
但它的工作原理,如果拥有使用:
{'query': {'multi_match': {'query': "dementia in alzheimer's", 'type': 'phrase', 'fields': ['_all']}}}
在另一方面,Bool query作品如果没有占有权:
{'query': {'bool': {'must': [{'match_phrase': {'Diagnosis': "dementia in alzheimer"}}]}}}
但是,如果拥有使用它不起作用:
{'query': {'bool': {'must': [{'match_phrase': {'Diagnosis': "dementia in alzheimer's"}}]}}}
如何使上述工作的所有查询?
- 更新 -
的布尔查询的工作,如果你在查询中添加stem_analyzer
。因此您在搜索过程中使用它。而且我得到了一个既拥有也不拥有的短语的结果。 mybody = {'query': {'bool': {'must': [{'match_phrase': {'Diagnosis': {'query': "dementia in alzheimer's", 'analyzer': 'stem_analyzer'}}}]}}}
但是,如果您添加分析器,多匹配查询将停止工作。对于拥有和不拥有的词组,我都没有得到任何结果。 {'query': {'multi_match': {'query': "dementia in alzheimer's", 'type': 'phrase', 'analyzer': 'stem_analyzer', 'fields': ['_all']}}}
为什么分析仪不适用于多重匹配查询?