【问题标题】:multiphrase method with two phrases - Elastic Search带有两个短语的多短语方法 - 弹性搜索
【发布时间】:2016-08-05 14:15:54
【问题描述】:

我有一段话

Lorem Ipsum 只是打印和排版的虚拟文本 行业。 Lorem Ipsum 一直是业界标准的虚拟文本 自 1500 年代以来,当一位不知名的印刷商采用了一种类型的厨房和 争先恐后地制作了一本类型样本书。它不仅活了下来 五个世纪,也是电子排版的飞跃, 基本保持不变。

现在我想在这一段中使用两个短语的匹配短语。

1.简单的打印虚拟文本

2.制作类型标本本

弹性搜索查询应该检查这两个短语是否都出现在段落中并返回答案。我怎样才能做到这一点?

提前致谢。

我对代码的看法:

{
    "query": {
        "match_phrase": {
            "paragraph": {
                "query": {"simply dummy text of the printing","make a type specimen book"}
            }
        }
    }
}

这是正确的做法吗??

【问题讨论】:

    标签: c# asp.net elasticsearch nest


    【解决方案1】:

    “AND”类条件:

    {
      "query": {
        "bool": {
          "must": [
            {
              "match_phrase": {
                "paragraph": "simply dummy text of the printing"
              }
            },
            {
              "match_phrase": {
                "paragraph": "make a type specimen book"
              }
            }
          ]
        }
      }
    }
    

    “OR”类条件:

    {
      "query": {
        "bool": {
          "should": [
            {
              "match_phrase": {
                "paragraph": "simply dummy text of the printing"
              }
            },
            {
              "match_phrase": {
                "paragraph": "make a type specimen book"
              }
            }
          ]
        }
      }
    }
    

    【讨论】:

    • 谢谢安德烈。如果我不想必须并且想要检查其中任何一个是否存在呢?
    • 那你需要should
    • 感谢 Andrei 的即时回复.. 将尝试一次.. :)
    • 如果两个短语完全匹配,为什么分数仍然不是 1?分数是如何给出的?你能解释一下吗?
    • 因为比这更复杂。这解释了其中的一部分:elastic.co/guide/en/elasticsearch/guide/current/…。如果将?explain 添加到查询中,您可以看到 ES 是如何计算分数的:GET /my_index/my_type/_search?explain
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多