我之前没有实现过搜索功能,感觉有点卡住。我有一个太阳黑子搜索功能,可以根据关键字查找结果 - 这非常有效 - 但我现在想实现多选方面功能,但我什至不知道如何设置基本的方面搜索。
我有多对多的关系(在 Rails 中而不是在现实生活中):
类人 has_many :技能,:通过 => 经验(反之亦然等)
Class People < ActiveRecord::Base
has_many :skills, :through => experience
searchable do
text :first_name, :surname
end
end
在控制器中
@search = Sunspot.search(People)
facet :skill_ids
end
这是我无法工作的基本示例。它会生成此错误:
Sunspot::UnrecognizedFieldError: No field configured for People with name 'skill_ids'
如何创建指向 :skill_ids 的链接
我想我一定在模型中遗漏了一些参考 - 但我找不到任何示例来参考关系的 Id。我发现的大多数示例在使用构面功能时都使用该模型中已有的列。
- 我怎样才能让基本的实施工作正常进行?
- 我将如何在视图中使用它 - 我是否必须调用 hit.facet 并迭代技能?显示此内容的代码会是什么样子?
- 我如何选择多个方面进行搜索?
- 我应该将其放入社区维基吗?
感谢您的时间!
任何您想要过滤、分面或订购的内容,太阳黑子都需要了解。所以在你的模型中:
searchable do
text :first_name, :surname
integer :skill_ids, :multiple => true, :references => Skill
end
您在控制器中的 #search 调用看起来是正确的。在您看来,您应该按照以下方式做一些事情:
- @search.facet(:skill_ids).rows.each do |row|
= row.instance.name
row.instance
将返回该行值引用的 Skill 实例(这就是:references
选项正在做searchable
定义)。
我不确定你所说的“选择多个方面进行搜索”是什么意思——一个人可以生成多个方面(这为用户提供了choices进一步细化搜索)通过调用facet
一次搜索中多次使用该方法;然后您可以使用他们的方面选择与范围限制使用with
方法,您也可以根据需要多次调用该方法。
说到 wiki,大部分信息都可以在 Sunspot wiki 中找到(还有更多解释):
- http://wiki.github.com/outoftime/sunspot/ http://wiki.github.com/outoftime/sunspot/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)