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

ElasticSearch-短语建议器

谭凯
2023-03-14
问题内容

我正在使用ElasticSearch,并且具有以下索引映射:

post  /my_index
{ 
  "mappings": {
    "medical_terms": {
      "properties": {
        "terms": {
          "type":     "string"
        }
      }
    }
  }
}

PUT my_index/medical_terms/1
{
  "term":   "Paracetamol tablets"
}

POST /my_index/_search?search_type=count
{
  "suggest" : {
    "text" : "paracetmo tabelts",
    "simple_phrase" : {
      "phrase" : {
        "field" : "term",
        "size" : 1,
        "real_word_error_likelihood" : 0.95,
        "max_errors" : 0.5,
        "gram_size" : 2,
        "highlight": {
          "pre_tag": "<em>",
          "post_tag": "</em>"
        }
      }
    }
  }
}

我该如何获得建议者在返回“扑热息痛片”时立即返回:

"suggest": {
  "simple_phrase": [
     {
        "text": "paracetmo tabelts",
        "offset": 0,
        "length": 17,
        "options": [
           {
              "text": "paracetmo tablets",
              "highlighted": "paracetmo <em>tablets</em>",
              "score": 0.24901225
           }
        ]
     }
  ]

我需要使用自定义分析器和字典吗?


问题答案:

问题是"max_errors" : 0.5,参数。如果将其设置为0.8它返回您的预期结果。我无法真正向您解释0.8为何有效的原因,因为实际上0.5意味着50%的术语可能写错了,这就是您的用例,但在某种程度上可以与0.8一起使用。也许在elasticsearch用户组中询问该信息?



 类似资料:
  • 问题内容: 我有以下查询,以便在搜索中增加模糊性。但是,我现在意识到,匹配查询不像match_phrase那样考虑搜索字符串中单词的顺序。但是,我无法获得match_phrase给我模糊的结果。有没有办法告诉比赛考虑单词之间的顺序和距离? 问题答案: 最终发现我需要使用查询的组合,从而对模糊性和倾斜度进行了大量的微调。我需要添加一个函数来手动标记我的短语并以编程方式添加到“子句”数组中:

  • 我现在从Elasticsearch开始。我为一些EDIFACT消息(一种史前数据格式;-)编制了索引,内容如下: 当我搜索短语UNH 66304 CODECO: D:95B时,它应该只返回一次命中,但它似乎返回了包含任何这些单词的所有文件(并且UNH在每个文档中)。我的查询是: 我尝试添加“and”操作符,如下所示: 但是没有返回结果。我在这里读到了建议:搜索需要使用双引号的确切短语。我试过“查询

  • 以下是可用的样本数据: null 示例查询: } 尝试了match_phrase_prefix,这也类似于prefix 示例查询:

  • 我喜欢从Elasticsearch得到的结果,使用Edge-NGrams索引数据,并使用不同的分析器进行搜索。然而,我更希望匹配的较短术语比较长术语排名更高。 例如,以术语和为例。如果我使用术语执行查询,我会以相同的得分返回这两个文档。我希望的得分高于,因为closer与的匹配类似于Levenshtein距离算法。 设置索引: 插入文档: 搜索查询: 结果: 有谁知道我是如何将等较短的术语排在之前

  • 问题内容: 我有一个Elasticsearch索引,其中有一些数据。我实现了该功能,所以当用户写错拼写的东西时,它可能会收到带有正确单词的建议。 之所以使用短语建议者,是因为我需要一些简短的短语(例如名称)的建议,问题是索引中不存在某些建议。 例: 我的问题是,索引中没有与指定建议匹配的词组,因此它向我推荐了不存在的词组,因此会给我一个未找到的搜索词。 我该怎么办?短语建议者是否应该为索引中实际存

  • 我想从多个领域得到建议。我找不到这样的例子,所以也许这不是最好的主意,但我对你的意见很感兴趣。 要求是: GET查询适用于文本“fyodor”和“dostoevsky”,此示例仅适用于“fyodor” 启用筛选建议 我有什么想法可以实现这些?