the*_*ned 9 search many-to-many ruby-on-rails sunspot faceted-search
我之前没有实现过搜索功能,感觉有些卡住了.我有一个太阳黑子搜索功能,可以根据关键字查找结果 - 这很有效 - 但我现在想要实现多选择方面功能,但我似乎无法弄清楚如何设置基本方面搜索.
我有很多关系(在现实生活中没有轨道):
Class People has_many:技能,:through =>经验(反之亦然等)
Class People < ActiveRecord::Base
has_many :skills, :through => experience
searchable do
text :first_name, :surname
end
end
Run Code Online (Sandbox Code Playgroud)
在控制器中
@search = Sunspot.search(People)
facet :skill_ids
end
Run Code Online (Sandbox Code Playgroud)
这是我无法工作的基本例子.它会生成此错误:
Sunspot::UnrecognizedFieldError: No field configured for People with name 'skill_ids'
Run Code Online (Sandbox Code Playgroud)
如何创建指向:skill_ids的链接
我想我必须在模型中遗漏一些参考 - 但我找不到的例子确实引用了关系的ID.我发现的大多数示例在使用构面功能时都使用了该模型中已有的列.
感谢您的时间!
out*_*ime 14
任何你想要过滤,分面或订单的东西,太阳黑子需要知道.所以在你的模型中:
searchable do
text :first_name, :surname
integer :skill_ids, :multiple => true, :references => Skill
end
Run Code Online (Sandbox Code Playgroud)
您控制器中的#search调用看起来正确.在您看来,您可以按照这些方针做一些事情:
- @search.facet(:skill_ids).rows.each do |row|
= row.instance.name
Run Code Online (Sandbox Code Playgroud)
row.instance将返回行的值引用的Skill实例(这是:references选项在searchable定义中执行的操作).
我不确定你的意思是"通过选择多个方面进行搜索" - 通过在搜索中多次调用该方法,可以生成多个方面(为用户提供进一步搜索优化的选择)facet; 然后,您可以使用with方法限制使用他们的方面选择,您也可以根据需要多次调用.
说到维基,太阳黑子维基中提供了大部分信息(有更多解释):
| 归档时间: |
|
| 查看次数: |
5227 次 |
| 最近记录: |