我正在尝试将solr搜索实现到我的一个rails项目中。我的问题陈述是能够搜索我的模型并显示相关结果以及自动建议。有人可以帮助我正确完成它。目前我正在尝试使用太阳黑子solr虽然它不能按预期工作。我可以看到在我的项目中创建了一些索引,但搜索无效。也没有自动建议的宝石。以下是我的代码的一些片段。是的,我已经通过solr的其他链接,但它没有解决我的问题。
类别模型
class Category < ActiveRecord::Base
attr_accessible :name, :parent_category_id, :image, :image_file_name, :image_content_type, :image_file_size
has_and_belongs_to_many :events, :join_table => :categories_events
has_attached_file :image
searchable do
text :name
end
end
我的控制器
if params.has_key?(:category)
puts "Inside Index Search"
puts params[:category]
@search = Category.ransack do
fulltext params[:category]
end
@category = @search.result.first
我将结果导入@category并在我的视图中使用它来显示。
提前致谢。我非常感谢你的帮助。 : - )
答案 0 :(得分:3)
Category.ransack方法有什么作用?我假设您正在使用太阳黑子宝石将Solr集成到您的项目中。如果是这样,请使用Category.search搜索索引。然后使用
@search.results
不
@search.result
所以你的代码应该是这样的:
@search = Category.search do
fulltext params[:category]
end
@category = @search.results.first
你也可以写得更短:
@category = Category.search do
fulltext params[:category]
end.results.first
请记住,在Solr中使用索引之前,您已运行:
rake sunspot:solr:reindex
如果您正在寻找有关在Solr上实施自动填充的信息,请阅读以下文章:http://olgagr.github.io/ruby/solr/how-to-implement-autocomplete-with-solr-and-ruby-on-rails
前段时间我也在努力解决这个话题。
答案 1 :(得分:0)
我解决了。 Solr和Ransack gem之间存在冲突,这就是我无法获得结果集的原因。它需要以下更改并立即开始工作。
@search = Sunspot.search(Category) do
fulltext params[:search]
end
@category = @search.results
修改强>
我的回答可能看起来不完整所以只需添加适合我的代码段。
我的模特
searchable do
text :name, :as => :name_textp
text :description, :as => :description_textp
text :category_strings, :as => :category_strings_textp
string :get_valid_dates, :multiple => true
integer :category_ids, :multiple => true
boolean :active
boolean :company_display
end
我的控制器
search_results = Sunspot.search(Event) do
fulltext current_search
with(:category_ids, [ id ])
with(:active, true)
with(:company_display, true)
paginate(:page => @current_page, :per_page => page_size)
end
希望它有所帮助。
答案 2 :(得分:0)
Solr &amp;的冲突 Ransack 方法 搜索 。
请使用 solr_search 代替搜索
例如:
search = Product.solr_search do
fulltext 'random'
end
search.results