可以说,我想在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/