有什么办法可以在Elastic Search中匹配类似匹配

问题描述

我有一个弹性搜索的大文件

我正在使用以下查询进行搜索

{"size": 1000,"query": {"query_string": {"query": "( string1 )"}}}

假设我的string1 =产品,如果某一种事故类型引起了某些人忘记了o

有没有办法搜索

{"size": 1000,"query": {"query_string": {"query": "( prdct )"}}}还必须返回prdct +产品的结果

解决方法

您可以使用df.div返回包含与搜索词相似的词的文档。请参阅此fuzzy query,以获得有关模糊查询的详细说明。

自此以来,您有更多的编辑距离来匹配prdct。模糊性参数可以定义为:

0,1,2

0..2 = Must match exactly

3..5 = One edit allowed

More than 5 = Two edits allowed

索引数据:

{
  "title":"product"
}
{
  "title":"prdct"
}

搜索查询:

{
    "query": {
        "fuzzy": {
            "title": {
                "value": "prdct","fuzziness":15,"transpositions":true,"boost": 5
            }
        }
    }
}

搜索结果:

"hits": [
      {
        "_index": "my-index1","_type": "_doc","_id": "2","_score": 3.465736,"_source": {
          "title": "prdct"
        }
      },{
        "_index": "my-index1","_id": "1","_score": 2.0794415,"_source": {
          "title": "product"
        }
      }
    ]
,

有很多解决此问题的方法:

  • Suggestions(是不是您指的是X)。
  • Fuzziness(根据您原来的搜索字词进行编辑)。
  • 具有自动完成功能的部分匹配(如果有人键入“ pr”,并且您提供了可用的搜索词,则他们可以立即单击正确的结果)或n-gram(匹配字母组)。

所有这些都需要权衡索引/搜索开销以及经典的精度/召回问题。