elasticsearch,tire,n-gram,Autocomplete,elasticsearch,Tire,N Gram" /> elasticsearch,tire,n-gram,Autocomplete,elasticsearch,Tire,N Gram" />

Autocomplete 每个ActiveModel/记录有多个映射?

Autocomplete 每个ActiveModel/记录有多个映射?,autocomplete,elasticsearch,tire,n-gram,Autocomplete,elasticsearch,Tire,N Gram,假设我想在blogpost之类的东西上创建两个单独的索引,这样我就可以使用一个索引进行快速搜索(例如,出于自动完成的目的),然后使用另一个索引进行完整的搜索查询 我能用轮胎做些什么吗? 所以像这样的事情(如果有点原始,请原谅我) class Post“我的内存分析器” 结束 索引名称“main” 映射do 索引:标题 索引:描述 索引:作者 索引:发布于 结束 结束 如果回调知道从适当的索引中添加和删除新的帖子,您不能在Tire中这样做,使用mappingDSL方法在一个类中设置两个单独的索引

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

我能用轮胎做些什么吗? 所以像这样的事情(如果有点原始,请原谅我)

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