【问题标题】:Elasticsearch Suggest+Synonyms+fuzzinessElasticsearch Suggest+同义词+模糊性
【发布时间】:2019-07-18 21:15:12
【问题描述】:

我正在寻找一种方法来实现具有同义词和模糊性的自动建议

例如,当用户尝试搜索“replce ar”时 我的同义词列表有 ar => 录音

所以,结果应该包括匹配的项目 改变录音 更换录音 等等,

这里我们需要模糊,因为“替换”有一个错字(在用户的搜索文本中) 匹配 ar => 音频记录的同义词 使用正则表达式模式自动建议。

是否可以在一个字段中实现所有三个功能?

编辑: 正则表达式+模糊只会引发错误。 我还没有很好地解释我对正则表达式模式的需求。 所以,我需要一个正则表达式来进行部分单词查找('encyclopedic' 包含'cyclo')。

现在,在为此目的调查 what options do i have 后,将我引导至 NGram Tokenizer 并查看其他建议者,我发现也许 Phrase suggester 确实是我想要的,所以我会尝试一下并告诉你。

【问题讨论】:

    标签: elasticsearch fuzzy-search search-suggestion type-synonyms


    【解决方案1】:

    是的,您可以使用同义词以及模糊性来获得建议。通过在语言分析器中添加同义词过滤器并将该过滤器添加到分析器来处理同义词。然后,当您为要用于建议的字段创建字段映射时,将该分析器分配给该字段。

    至于模糊性,这发生在查询时。大多数基于文本的查询都支持fuzziness 选项,该选项允许您指定要允许的更正次数。默认的auto 值会根据期限的长短调整更正的次数,因此这通常是最好的。

    名义分析设置 (synonym_graph reference)

    {
      "analysis": {
        "filter": {
          "synonyms": {
            "type": "synonym_graph",
            "expand": "false",
            "synonyms": [
              "ar => audio record"
            ]
          }
        },
        "analyzer": {
          "synonyms": {
            "tokenizer": "standard",
            "type": "custom",
            "filter": [
              "standard",
              "lowercase",
              "synonyms"
            ]
          }
        }
      }
    }
    

    名义字段映射 (Analyzer + Mapping reference)

    (请注意,分析器与上面定义的分析器的名称匹配)

    {
      "properties": {
        "suggestion": {
          "type": "text",
          "analyzer": "synonyms"
        }
      }
    }
    

    名义查询

    {
      "query": {
        "match": {
          "suggestion": {
            "query": "replce ar",
            "fuzziness": "auto",
            "operator": "and"
          }
        }
      }
    }
    

    请记住,有几个不同的options for suggestions,因此根据您使用的选项,您可能需要调整字段的映射方式,甚至向分析器添加另一个标记过滤器。但是分析器只是由一系列标记过滤器组成,因此您通常可以组合实现目标所需的任何标记过滤器。只需确保您了解每个过滤器的作用,以便按照正确的顺序获取过滤器。

    如果您在此过程的部分过程中遇到困难,只需提交另一个关于您遇到的具体问题的问题。祝你好运!

    【讨论】:

    • 再提交一个问题:我不明白为什么人们建议分行?在我看来,一个话题越集中越好
    • 我认为这是因为具体的问题更有可能得到具体的答案。例如,有人可能对回答您最初关于整合建议+同义词+模糊性的问题不感兴趣,但他们愿意帮助解决有关设置同义词的特定问题。此外,关于特定主题的问题越多,对寻求该主题帮助的用户来说就越好。
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2019-05-08
    • 1970-01-01
    • 2019-02-22
    • 2022-01-04
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多