Autocomplete 每个ActiveModel/记录有多个映射?
假设我想在blogpost之类的东西上创建两个单独的索引,这样我就可以使用一个索引进行快速搜索(例如,出于自动完成的目的),然后使用另一个索引进行完整的搜索查询 我能用轮胎做些什么吗? 所以像这样的事情(如果有点原始,请原谅我)Autocomplete 每个ActiveModel/记录有多个映射?,autocomplete,
elasticsearch,tire,n-gram,Autocomplete,
elasticsearch,Tire,N Gram,假设我想在blogpost之类的东西上创建两个单独的索引,这样我就可以使用一个索引进行快速搜索(例如,出于自动完成的目的),然后使用另一个索引进行完整的搜索查询 我能用轮胎做些什么吗? 所以像这样的事情(如果有点原始,请原谅我) class Post“我的内存分析器” 结束 索引名称“main” 映射do 索引:标题 索引:描述 索引:作者 索引:发布于 结束 结束 如果回调知道从适当的索引中添加和删除新的帖子,您不能在Tire中这样做,使用mappingDSL方法在一个类中设置两个单独的索引
class Post“我的内存分析器”
结束
索引名称“main”
映射do
索引:标题
索引:描述
索引:作者
索引:发布于
结束
结束
如果回调知道从适当的索引中添加和删除新的帖子,您不能在Tire中这样做,使用
mapping
DSL方法在一个类中设置两个单独的索引(和映射)
最好使用两个单独的索引,一个用于自动完成,另一个用于搜索。有一个很好的StackOverflow,甚至还有一个elasticsearch让你开始
但是,除非您有大量数据,否则即使使用单个索引,也可以通过跨多个字段使用multi_字段
类型、match
查询以及基于NGram的分析器来实现这一点
查看概述该方法的教程
来自谢谢Karmi,我在问题页面上也为Tire留下了一条留言。
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