25

有谁知道如何向建议者添加过滤器?

这很好用:

{
"headline-suggest" : {
    "text" : "n",
    "completion" : {
        "field" : "headline_suggest"
    }
}

但我想强制 ElasticSearch 从数据子集构建建议列表,例如:

{
"headline-suggest" : {
    "text" : "n",
    "completion" : {
        "field" : "headline_suggest"
    }
},
"filter" : {
    "term" : { "mydifferentfield" : "someword" }
}
}

我怎样才能实现它?

(我使用的是弹性搜索 0.90.5)

4

3 回答 3

22

根据 1.2.0 版本,您可以向建议者添加上下文并获得过滤的建议。

介绍性博文 介绍性博文

完整文档 完整文档

于 2014-10-28T16:27:19.727 回答
2

我不太确定,但我认为您无法在弹性搜索中过滤建议请求。

从我读到的内容来看,这是由于它存储的数据结构类型。elasticsearch 计算在索引时建议的术语的统计数据,并将这些数据用于建议操作。

您是否尝试结合建议执行正常查询?也许会有不同的结果?

curl -s -XPOST 'localhost:9200/_search' -d '{
  "query" : {
    ...
  },
  "suggest" : {
    ...
  }
}'
于 2013-10-17T21:33:28.350 回答
0

无法过滤您的完成情况。正如 javanna 所说,完成功能是在索引时建立在 FST 上的,所以你不能在这里使用过滤器。

为此,您可以使用 ngram/edge ngram。让我们阅读这里以获得基本概念:http: //jontai.me/blog/2013/02/adding-autocomplete-to-an-elasticsearch-search-application/

于 2013-12-16T02:38:28.303 回答