首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Elasticsearch中处理无序多字查询?

如何在Elasticsearch中处理无序多字查询?
EN

Stack Overflow用户
提问于 2017-11-20 19:51:07
回答 1查看 387关注 0票数 1

我有以下情况:

简单分析器处理文本“棕色和绿色狐狸是快速的”,并添加个别小写术语的索引。

我想对我的索引使用以下查询短语:“快速布朗f”

我使用前缀来运行这个搜索:

代码语言:javascript
复制
{
    "query": {
        "match_phrase_prefix" : {
            "message" : {
                "query" : "quick brown f",
                "max_expansions" : 10
            }
        }
    } 
}

不幸的是,没有返回结果,因为术语的顺序与查询项不匹配。如果我使用匹配查询和使用完整的术语,我将得到结果。似乎match_phrase_prefix正在检查订单:

这个查询的工作方式是用快速和棕色创建短语查询(即,术语must必须存在,并且必须是,后面是,后面是brown)。

我的问题是:

是否有一种方法可以运行一个查询,它处理不完整的术语并返回结果,而不管源文档中术语的顺序如何?我目前唯一能想到的选择是为输入查询中的每个术语手动创建一个查询(例如:快速、褐色、f),并使用bool查询将它们组合起来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-20 21:42:39

edge_ngram分析器应该做您想做的事情。如果将其设置为min_gram值为1,最大克值设置为10,则文档将存储必要的令牌。然后,可以将标准分析器应用于查询文本,并将其与edge_ngram文档字段匹配。

示例在文件中与所请求的解决方案几乎完全相同。注意,在查询中使用显式and运算符,以确保所有搜索标记(部分或其他)都匹配。

从5.6的文件中:

代码语言:javascript
复制
PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "autocomplete": {
          "tokenizer": "autocomplete",
          "filter": [
            "lowercase"
          ]
        },
        "autocomplete_search": {
          "tokenizer": "lowercase"
        }
      },
      "tokenizer": {
        "autocomplete": {
          "type": "edge_ngram",
          "min_gram": 1,
          "max_gram": 10,
          "token_chars": [
            "letter"
          ]
        }
      }
    }
  },
  "mappings": {
    "doc": {
      "properties": {
        "title": {
          "type": "text",
          "analyzer": "autocomplete",
          "search_analyzer": "autocomplete_search"
        }
      }
    }
  }
}

PUT my_index/doc/1
{
  "title": "Quick Foxes" 
}

POST my_index/_refresh

GET my_index/_search
{
  "query": {
    "match": {
      "title": {
        "query": "Quick Fo", 
        "operator": "and"
      }
    }
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47399956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档