当前位置: 首页 > 面试题库 >

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

蔺昊穹
2023-03-14
问题内容

我有以下分析设置:

"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"
 }

我希望能够用 老年痴呆 痴呆症 或用 老年痴呆症的 话写 痴呆

。因此,我想 在老年痴呆症中 获得 痴呆症

如果不使用所有物,则多匹配查询将不起作用:

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

但是,如果使用所有物,它就可以工作:

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

另一方面,如果不使用所有物,则布尔查询有效:

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

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


问题答案:

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



 类似资料:
  • 我创建了一个数据框,其中包含要被词干化的句子。我想用雪球机来获得更高的分类算法精度。我该如何实现这一点?

  • 自然语言处理(NLP),尤其是英语,已经发展到这样一个阶段,如果存在“完美”的词干分析器,词干分析将成为一项古老的技术。这是因为词干分析器将单词/符号的表面形式改变为一些无意义的词干。 然后,由于不同的非线性规划任务需要不同级别的柠檬化,因此“完美”柠檬化器的定义再次受到质疑。E、 g.在动词/名词/形容词形式之间转换单词。 词干分析器 柠檬酸酯 > 所以问题是,英语词干在今天有用吗?因为我们有过

  • 问题内容: 我正在使用elasticsearch 1.1.2。 我在可搜索字段上使用具有不同权重的多重匹配查询。 例: {“ multi_match”:{“ query”:“这是一个测试”,“ fields”:[“ title ^ 3”,“ description ^ 2”,“ body”]}} 因此,在我的示例中,标题的重要性是正文的三倍。 我想根据找到的匹配项为每个字段自定义权重。 假设我搜索

  • 因为词法规则可以使用递归,所以词法解析器在技术上和语法解析器一样强大。那意味着我们甚至可以在词法分析器中匹配语法结构。或者,在另一个极端,我们可以把字符当作记号,使用语法分析器去把语法结构应用到字符流(这种被称为无扫描语法分析器)。这导致什么在词法分析器中匹配和什么在语法分析器中匹配的界线在哪里并不是很明显。幸运的是,有几条经验法则可以让我们做出判断: 在词法分析器中匹配和丢弃任何语法分析器根本不

  • 问题内容: 我在理解带轮胎宝石的elasticsearch中分析仪的概念时遇到了麻烦。我实际上是这些搜索概念的新手。这里有人可以帮我提供一些参考文章还是解释一下分析仪的实际作用以及为什么要使用它们? 我看到在Elasticsearch中提到了不同的分析器,例如关键字,标准,简单,滚雪球。没有分析仪的知识,我无法确定真正适合我的需求。 问题答案: 我给你一个简短的答案。 在索引时间和搜索时间使用分析

  • 我使用Elasticsearch 2.3-Nest API来搜索数据。我正在为文档使用属性映射。我想知道如何使用语音分析器使用属性映射。 文档类: 索引创建和插入: ESMapper仅用于从一种类型转换为另一种类型。 结果映射: 我还安装了语音分析插件