当前位置: 首页 > 知识库问答 >
问题:

弹性搜索中任意顺序的模糊匹配词

江英卓
2023-03-14

我需要实现的是基于单个字段(产品名称,基本上由所有可能的筛选器值组成)来匹配文档。我知道这不是最可靠的解决方案,但我只有这一个领域可以使用。

我需要能够发送搜索查询,并将该查询中的单词以任何顺序匹配到name字段(名称应包含搜索查询中的所有单词)。实际上,在这一点上,简单的match_phrase_prefix效果很好,但是那里缺少的是模糊。因为我们需要的另一件事是允许用户做一些拼写错误,并且仍然获得相关的结果。

我的问题是,有没有什么方法可以进行类似match_phrase_prefix的查询,但具有模糊性?

我尝试了一些带有match的嵌套bool查询,但是我没有得到任何接近< code>match_phrase_prefix的结果。

我尝试的例子:

相当好的结果,但没有模糊性:

{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase_prefix": {
            "name.standard": {
              "query": "brand thing model",
              "slop": 10
            }
          }
        }
      ]
    }
  }
}

模糊性,但匹配非常有限:

    {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "name.standard": {
                  "query": "thing",
                  "fuzziness": "AUTO",
                  "prefix_length": 3
                }
              }
            },
            {
              "match": {
                "name.standard": {
                  "query": "brand",
                  "fuzziness": "AUTO",
                  "prefix_length": 3
                }
              }
            }
          ]
        }
      }
    }

使用上面的< code>should,我得到了更多的结果,但是它们远不如第一次查询得到的结果相关。

共有1个答案

郎河
2023-03-14

以上可以通过简单的匹配查询来实现

{
  "query": {
    "match": {
      "name.standard": {
        "query": "brand thing model",
        "operator": "and" ,//It means all of above 3 tokens must be present in any order
        "fuzziness": "AUTO" // value as per your choice
      }
    }
  }
}
 类似资料:
  • 问题内容: 我正在执行模糊搜索,需要查看匹配的单词。例如,如果我正在搜索查询,并且它使该字段与句子匹配,则我需要能够知道匹配是由于单词引起的。 我尝试设置参数,但似乎未包含我需要的信息。有什么想法吗? 问题答案: 好吧,这就是我想要的: 经过一些研究,我发现了elasticsearch的突出功能。 默认情况下,它返回匹配项周围的上下文片段,但是您可以将片段大小设置为查询长度,以仅返回完全匹配项。例

  • 我希望与字段中的字符串完全匹配,然后返回一天,提取所有此类记录。我所使用的json似乎也与简单的单词相匹配。我不确定我哪里出了问题。我需要向这个查询JSON添加吗?我目前拥有的JSON如下所示:

  • 问题内容: 我正在使用SQL Server 2008 R2 SP1。 我有一张约有36034个客户记录的表。我正在尝试在“客户名称”字段上实施Fuzy搜索。 这是模糊搜索的功能 这是调用该函数的查询 这大约需要2分22秒,可以为我提供所有对象的模糊匹配百分比 我如何解决此问题以在不到一秒钟的时间内运行。关于我的功能的任何建议,以使其更强大。 预期输出为45.34、40.00、100.00、23.0

  • 匹配查询用于实现以下情况的映射是什么 不区分大小写的搜索 数字搜索 特殊字符搜索 单字符搜索 > 我尝试使用通配符,但id不支持区分大小写 尝试使用小写规范化器匹配查询,它不支持特殊字符和单字符搜索 已尝试使用 ngram 匹配查询,但它不支持特殊字符和数字搜索。 任何人都可以帮助我的映射来支持上面提到的所有情况,无论是类型还是类型都很好

  • 我不知道如何通过MatchPhrasePrefix搜索索引中的文档。我想匹配整个搜索词短语,但允许在最后一个词上加前缀。 这个LINQ建筑给了我1.0分的一切。我将如何构建这个?另一方面,是否可以查看NEST正在构建的原始查询?那将非常有帮助!

  • 我已经完成了名称索引。它包含椅子、椅子等数据。 当我尝试用“cha”搜索时,它不会返回任何椅子。这是返回“毛毯”,我期待的文件有椅子。 下面是我的代码: 搜索请求: 搜索响应: } 映射: 我该怎么解决这个问题? 谢谢,Sri