如何将段落与ElasticSearch中的短语匹配?

时间:2019-01-21 18:35:15

标签: elasticsearch

我的目标是使用ElasticSearch查找可以在要查询的段落内找到哪些索引短语。

我尝试使用渗滤搜索,但无法将其优化为100%匹配。可悲的是,ElasticSearch文档不够清晰。

我的索引文件:

  • 必须比50mph快
  • 必须跳得比树高
  • 能够站立在两只脚上

我的查询:

  

“我们正在寻找一种动物,该动物必须能够站立在两只脚上,还必须跳得比树高,并且应该比40mph快,并且具有带有翅膀的白色和红色条纹”

我期望得到什么结果(完全匹配,不区分大小写):

  • 能够站立在两只脚上
  • 必须跳得比树高

我得到什么结果(部分匹配):

  • 能够站立在两只脚上
  • 必须跳得比树高
  • 必须快于每小时50英里

2 个答案:

答案 0 :(得分:1)

  

但是我无法将其优化为100%匹配

似乎您需要使用full-text query之类的Match Phrase Query。来自docs

  

高级全文查询通常用于在全文字段(如电子邮件正文)上运行全文查询。

答案 1 :(得分:1)

正如已经建议的那样,您应该尝试match_phrase

您的查询应类似于。

GET <indexname>/_search
{

  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "Sentence": "be able to stand on two feet"
          }
        },
        {
          "match_phrase": {
            "Sentence": "must jump higher than a tree"
          }
        }
      ]
    }
  }
}
  

P.S .:您应该按顺序提供match_phrases   在那里。