ES全文检索-match phrase prefix query

ES全文检索-match phrase prefix query

match phrase prefixmatch phrase用法基本一致,区别就在于它允许对最后一个词条进行前缀匹配。

示例

POST _bulk
{ "index" : { "_index" : "test_doc4"} }
{ "content":"I like job"}
{ "index" : { "_index" : "test_doc4"} }
{ "content":"I like java"}

上面构建了部分测试数据,例如现在搜索I like j文本信息如下:

GET test_doc5/_search
{
"query": {
"match_phrase_prefix": {
"content": {
"query": "i like j"
}
}
}
}

上面查询会将文档中包含I like j所有匹配的内容全部查出,结果如下:

{
  "took" : 14,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 1.7509375,
    "hits" : [
      {
        "_index" : "test_doc5",
        "_type" : "_doc",
        "_id" : "Y-BezIQBRNx5Pfd5kwaO",
        "_score" : 1.7509375,
        "_source" : {
          "content" : "I like job"
        }
      },
      {
        "_index" : "test_doc5",
        "_type" : "_doc",
        "_id" : "ZOBezIQBRNx5Pfd5kwaO",
        "_score" : 1.7509375,
        "_source" : {
          "content" : "I like java"
        }
      }
    ]
  }
}

从结果可以看出,I like javaI like job都被查询出来了,因为它们符合I like j查询字符串。

max_expansions

该属性和match query中类似,例如你的文档中包含许多I like j内容的文档,查询时会将这些文档全部返回。而实际上可以通过max_expansions来限制最多返回多少个。

该属性在多shard的情况下可能表现的与实际参数不一致,这是因为每个shard中的数据不一致导致的。如果shard数量为1时,则不会出现这种问题。

slop

该属性与match phrase query中用法一致。


原文始发于微信公众号(一只菜鸟程序员):ES全文检索-match phrase prefix query

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/72817.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!