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

我可以用Tyre做些什么吗?
像这样(原谅我,如果它有点原始)

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

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

最佳答案

您无法在Tire中执行此操作,而是使用mapping DSL方法在一个类中设置两个单独的索引(和映射)。

最好使用两个单独的索引,一个用于自动完成,另一个用于搜索。有一个不错的tutorial,StackOverflow answer甚至是elasticsearch plugin可以帮助您入门。

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

请查看Autocomplete with Tire教程,其中概述了该方法。

https://github.com/karmi/tire/issues/531的交叉发布

关于autocomplete - 每个ActiveModel/记录有多个映射?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13641300/

10-10 22:22