我如何在ElasticSearch中添加过滤器到补全建议器?

1tu0hz3e  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(3)|浏览(190)

有人知道如何添加过滤器到sugester吗?
这样做效果很好:

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

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

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

我如何才能实现它?
(我使用的是ElasticSearch0.90.5)

cig3rfwq

cig3rfwq1#

根据版本1.2.0,您可以将上下文添加到建议器并获得过滤的建议。
Introductory blog postIntroductory blog post显示器
Full DocsFull Docs打印机

nr9pn0ug

nr9pn0ug2#

我不是很确定,但是我认为你不能在ElasticSearch中过滤一个建议的请求。
从我所读到的内容来看,这是由于它所存储的数据结构的类型。Elasticsearch在索引时计算要建议的术语的统计数据,并将这些数据用于建议操作。
你有没有试过用一个普通的查询和一个建议相结合?2也许会有一个不同的结果?

curl -s -XPOST 'localhost:9200/_search' -d '{
  "query" : {
    ...
  },
  "suggest" : {
    ...
  }
}'
ee7vknir

ee7vknir3#

没有办法过滤你的补全。正如javanna所说,补全特性是在索引时建立在FST上的,所以你不能在这里使用过滤器。
要做到这一点,你可以尝试使用ngram/edge ngram。让我们从这里了解一下基本概念:http://jontai.me/blog/2013/02/adding-autocomplete-to-an-elasticsearch-search-application/

相关问题