ElasticSearch / Lucene中的偏好词紧密相连?

时间:2015-07-09 08:09:58

标签: search lucene elasticsearch

是否有选项可以使ElasticSearch对搜索到的单词在文档中看起来更接近的问题进行排名更高的查询?

在某些情况下,我正在研究一种法律研究产品。通常,有人会通过简单地将这些单词放入我们的搜索框来搜索“虚假声明法”等概念。但是,这些词在我们的数据库中非常普遍,包括关于完全不相关的文档,因此结果令人失望。

如果我能告诉ElasticSearch在其评分算法结果中考虑到附近的单词,那将是惊人的。

1 个答案:

答案 0 :(得分:2)

无论你现在有什么疑问,都必须有能够计算分数的东西,否则你就不会对得分更高或更低感兴趣。

拿走现有的所有内容并将其放入bool should。添加另一个should语句,该语句应使用match_phrase with slops或其中一个span queries

例如:

{
  "query": {
    "bool": {
      "should": [
        {
          "query_string": {
            "default_field": "some_text_field",
            "query": "False Claims Act"
          }
        },
        {
          "match_phrase": {
            "some_text_field": {
              "query": "False Claims Act",
              "slop": 0
            }
          }
        }
      ]
    }
  }
}

每一项都应该有助于文件的最终得分。上面的查询会通过考虑那些匹配False Claims Act更好的文档来“提升”最终得分。

slop表示您希望这些词语“接近”。