Elasticsearch短语建议



elasticsearch文档说明:

在实践中,该建议器将能够根据共现和频率更好地决定选择哪些令牌。

我有一个文档在我的索引,有一个名称字段的内容Bella Tank

要测试短语建议器,我发送以下查询:

curl -XPOST 'localhost:9200/my_index/_search?pretty' -d '{
  "suggest" : {
    "text" : "Bell Tank",
    "suggestion": {
      "phrase": {
        "field": "name",
        "size": 3
      }
    }
  }
}'

我收到的三个建议是:

"suggest" : {
  "suggestion" : [ {
    "text" : "Bell Tank",
    "offset" : 0,
    "length" : 9,
    "options" : [ {
      "text" : "ball tank",
      "score" : 0.03721739
    }, {
      "text" : "bella tank",
      "score" : 0.03721739
    }, {
      "text" : "bess tank",
      "score" : 0.034840018
    } ]
  } ]
}

可以看到,ball tankbella tank的建议得分相同,尽管我的索引中只有bella tank存在。它似乎根本不关心令牌的共现性。

我唯一的选择是在这里使用多字段创建name的非分析版本,还是我这样做都错了?

您需要在您建议反对的字段上使用瓦片过滤器。多字段非常适合于此,因为您可能不想使用带状疱疹搜索。您最多可以使用3个max_shingle_size

这当然是一个bug,文档没有很明显地提到这一点。

看看维基百科是如何设置建议分析器的。

最新更新