gpt4 book ai didi

elasticsearch - 所有格_英语词干分析器在Elasticsearch中的使用

转载 作者:行者123 更新时间:2023-12-02 23:29:06 25 4
gpt4 key购买 nike

我具有以下分析设置:

"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, bool(boolean) 查询将起作用。因此,您可以在搜索过程中使用它。无论有没有占有,我都会得到一个短语的结果。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']}}}
为什么分析器对多重匹配查询不起作用?

最佳答案

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']}}}
在 bool(boolean) 查询中,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'}}}]}}}

关于elasticsearch - 所有格_英语词干分析器在Elasticsearch中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38615486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com