【问题标题】:How to match incomplete terms in Elasticsearch using Searchkick?如何使用 Searchkick 匹配 Elasticsearch 中不完整的术语?
【发布时间】:2017-04-18 21:33:54
【问题描述】:

我在我的 Rails 应用程序中使用 Elasticsearch + Searchkick 来索引文章。当我使用不完整的单词进行搜索时,它不起作用。例如:

Article.search('feature compatibility').pluck(:name)
# => ["Feature compatibility by mobile device"]

Article.search('feature compatibil').pluck(:name)
# => []

我的模型使用默认的 Searchkick 设置。

【问题讨论】:

  • 你需要在你的模型中添加 searchkick text_start: [:attribute_name]
  • 然后在您的 Rails 控制台 Article.reindex 上运行它以将数据添加到搜索索引。
  • @Dnyanarthlonkar 试过了,没有成功。
  • 它没有找到co,因为feature compatibility 默认索引到featurecompatibility,即你根本没有索引ngrams。 match_phrase_prefix 是唯一一个无需对数据进行 ngram 即可获得所需内容的查询。

标签: ruby-on-rails elasticsearch searchkick


【解决方案1】:

首先将此添加到您的模型中(word_start 而不是 text_start

searchkick word_start: [:name, :body]

然后您需要删除索引,重新创建它并重新索引您的数据。 之后,您的搜索查询将按预期工作

【讨论】:

  • 很高兴它有帮助!
猜你喜欢
  • 2020-04-27
  • 1970-01-01
  • 2022-12-10
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
相关资源
最近更新 更多