0

假设我想在 BlogPosts 之类的东西上创建两个单独的索引,这样我就可以使用一个索引进行快速搜索(例如用于自动完成目的),然后使用另一个索引进行完整的搜索查询。

这是我可以用轮胎做的吗?所以像这样的东西(如果它有点原始,请原谅我)

class Post < ActiveRecord::Base
  include Tire::Model::Search
  include Tire::Model::Callbacks

   index_name 'autocomplete'
  mapping do
      indexes :title, :analyzer => 'my_ngram_analyzer'
  end

  index_name 'main'
  mapping do 
      indexes :title
      indexes :description
      indexes :author
      indexes :published_on
  end
end

回调知道从适当的索引中添加和删除新帖子的地方

4

1 回答 1

1

您不能在 Tire 中执行此操作,使用mappingDSL 方法在一个类中设置两个单独的索引(和映射)。

使用两个单独的索引可能是个好主意,一个用于自动完成,另一个用于搜索。有一个不错的教程、StackOverflow答案,甚至还有一个 elasticsearch插件可以帮助您入门。

但是,除非您有大量数据,否则即使使用单个索引、使用multi_field类型、match跨多个字段的查询以及可能基于 NGram 的分析器,您也可以实现这一目标。

查看概述该方法的Autocomplete with Tire教程。


来自https://github.com/karmi/tire/issues/531的交叉帖子

于 2012-12-04T12:06:22.920 回答