2016-07-27 15 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"}}]}}}

は、どのように仕事上のすべてのクエリを作るには?

- UPDATE - クエリで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にはそれに関するヒントはありません。

ので、以下の2つのマルチ一致クエリは、私のために同じ結果を返す:幹アナライザと連携match_phraseブールクエリでは、

{'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']}}}

を。

{'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'}}}]}}}

: 次の2つのクエリは同じ結果を返します
関連する問題