首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >possessive_english词干机在弹力搜索中的应用

possessive_english词干机在弹力搜索中的应用
EN

Stack Overflow用户
提问于 2016-07-27 14:13:56
回答 1查看 2.1K关注 0票数 1

我有以下分析设置:

代码语言:javascript
复制
"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"
    }   
  }
},

字符串类型的每个字段都有以下映射:

代码语言:javascript
复制
"field_name" : {
   "type" : "string",
    "analyzer" : "stem_analyzer",
    "search_analyzer" : "standard"
 }

我希望能用阿尔茨海默氏症()或阿尔茨海默氏症(老年痴呆症)短语写出痴呆。因此,我想在老年痴呆症中得了痴呆.。

如果不使用拥有权,则多匹配查询无法工作:

{'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': {'bool': {'must': [{'match_phrase': {'Diagnosis': "dementia in alzheimer"}}]}}}

但如果使用的话,它是行不通的:

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

如何使上述所有查询都能正常工作?

--更新--

如果在查询中添加stem_analyzer,则bool查询可以工作。因此,您在搜索期间使用它。我得到了一个短语的结果,无论是否拥有。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']}}}

为什么分析器不能用于多匹配查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-27 16:34:33

phrase类型不适用于多匹配查询的茎分析器。但是phrase_prefix类型是有效的。坦白说,我不知道为什么。在文档中没有这方面的提示。

因此,以下两个多匹配查询为我返回相同的结果:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38615486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档