2016-07-27 57 views
1

使用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']}}}

为什么分析仪不适用于多重匹配查询?

回答

0

phrase类型不适用于多分类查询的词干分析器。但phrase_prefix类型的作品。坦率地说,我不知道为什么。 documentation中没有提示。

所以,下面的两个多匹配查询返回相同的结果对我来说:

{'query': {'multi_match': {'query': "dementia in alzheimer", 'type': 'phrase_prefix', 'analyzer': 'stem_analyzer', 'fields': ['_all']}}}

{'query': {'multi_match': {'query': "dementia in alzheimer's", 'type': 'phrase_prefix', 'analyzer': 'stem_analyzer', 'fields': ['_all']}}}

在布尔查询,match_phrase工程与干仪。 以下两个查询返回相同的结果:

{'query': {'bool': {'must': [{'match_phrase': {'Diagnosis': {'query': "dementia in alzheimer", 'analyzer': 'stem_analyzer'}}}]}}}

{'query': {'bool': {'must': [{'match_phrase': {'Diagnosis': {'query': "dementia in alzheimer's", 'analyzer': 'stem_analyzer'}}}]}}}