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

在elasticsearch中使用模糊查询时找到实际匹配的单词

宦瀚
2023-03-14
问题内容

我是Elasticsearch的新手,正在寻找模糊查询搜索。
我用这样的对象/记录值制作了新的索引产品

{
            "_index": "products",
            "_type": "product",
            "_id": "10",
            "_score": 1,
            "_source": {
                "value": [
                    "Ipad",
                    "Apple",
                    "Air",
                    "32 GB"
                ]
            }
        }

现在当我在elasticsearch中执行模糊查询搜索时

{
   query: {
       fuzzy: {
          value: "tpad"
       }
   }
}

它会向我返回预期的正确记录(上述产品)。
而且我知道该术语tpad匹配,ipad因此记录已归还。
但是从技术上讲,我怎么知道它已经匹配了ipad。elasticsearch仅返回完整记录,像这样

{
"took": 4,
"timed_out": false,
"_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
},
"hits": {
    "total": 1,
    "max_score": 0.61489093,
    "hits": [
        {
            "_index": "products",
            "_type": "product",
            "_id": "10",
            "_score": 0.61489093,
            "_source": {
                "value": [
                    "Ipad",
                    "Apple",
                    "Air",
                    "32 GB"
                ]
            }
        }
    ]
}
}

是否有elasticsearch任何方式,这样我可以知道,如果它匹配了tpad反对ipad


问题答案:

如果使用高亮,Elasticsearch将显示匹配的术语:

curl -XGET http://localhost:9200/products/product/_search?pretty -d '{
  "query" : {
    "fuzzy" : {
        "value" : "tpad"
      }
  },
  "highlight": {
    "fields" : {
        "value" : {}
    }
  }
}'

Elasticsearch将返回匹配的文档,并突出显示该片段:

{
  "took" : 31,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.13424811,
    "hits" : [ {
      "_index" : "products",
      "_type" : "product",
      "_id" : "10",
      "_score" : 0.13424811,
      "_source":{
 "value" : ["Ipad",
                "Apple",
                "Air",
                "32 GB"
                ]
           },
      "highlight" : {
        "value" : [ "<em>Ipad</em>" ]
      }
    } ]
  }
}


 类似资料:
  • 问题内容: 我在项目中使用模糊匹配,主要是查找拼写错误和具有相同名称的不同拼写。我需要完全了解elasticsearch的模糊匹配如何工作以及它如何使用标题中提到的2个参数。 据我了解, min_similarity 是查询的字符串与数据库中的字符串匹配的百分比。我找不到有关此值如何计算的确切描述。 据我了解, max_expansions 是应该执行搜索的Levenshtein距离。如果这实际上

  • 本文向大家介绍thinkPHP实现多字段模糊匹配查询的方法,包括了thinkPHP实现多字段模糊匹配查询的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了thinkPHP实现多字段模糊匹配查询的方法。分享给大家供大家参考,具体如下: 引言:有时候查询要匹配多个字段。比如查询地址,地址是由多个字段组成的。有省、市、区等等,以及详细地址。这个时候如何查询呢? 实现不同字段相同的查询条件 用

  • 问题内容: 我正在执行模糊搜索,需要查看匹配的单词。例如,如果我正在搜索查询,并且它使该字段与句子匹配,则我需要能够知道匹配是由于单词引起的。 我尝试设置参数,但似乎未包含我需要的信息。有什么想法吗? 问题答案: 好吧,这就是我想要的: 经过一些研究,我发现了elasticsearch的突出功能。 默认情况下,它返回匹配项周围的上下文片段,但是您可以将片段大小设置为查询长度,以仅返回完全匹配项。例

  • 我正在使用一个定制的索引分析器来删除一组特定的停用词。然后,我用包含一些停用词的文本进行短语匹配查询。我认为停用词会从查询中过滤掉,但事实并非如此(任何不包含停用词的文档都会被排除在结果之外)。 下面是一个简单的例子,说明我要做的事情: 如果我对这个索引执行搜索,在查询中间有一个过滤的停止字,我希望它匹配(因为应该被我们的分析器过滤掉)。 然而,我没有得到任何结果。 在执行搜索之前,有没有办法指示

  • 本文向大家介绍Java如何使用elasticsearch进行模糊查询,包括了Java如何使用elasticsearch进行模糊查询的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Java如何使用elasticsearch进行模糊查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用环境上篇文章本人已书写过,需要maven坐标,ES连

  • 问题内容: 我刚刚开始探索Elasticsearch。我创建了一个文档,如下所示: 我现在尝试对Levenshtein距离为5的名称字段进行模糊搜索,如下所示: 但是它没有返回任何匹配。我希望圣路易斯的记录能归还。我该如何解决我的查询? 谢谢。 问题答案: 您的查询存在的问题是,最大编辑距离为2。 在上述情况下,您可能想要做的是将St.改为Saint 的同义词,这将与您匹配。当然,这将取决于您的数