如何使用太阳黑子设置具有多对多关系的方面搜索?
我之前没有实现过搜索function,感觉有些卡住了。 我有一个太阳黑子搜索function,可以根据关键字查找结果 – 这很有效 – 但我现在想要实现多选择方面function,但我似乎无法弄清楚如何设置基本方面搜索。
我有很多关系(在轨道中不在现实生活中):
Class People has_many:技能,:through =>经验(反之亦然等)
Class People 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。 我发现的大多数示例在使用构面function时都使用了该模型中已有的列。
- 如何使基本实现工作?
- 我如何在视图中使用它 – 我是否必须调用hits.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
定义中执行的操作)。
我不确定你的意思是“通过选择多个方面进行搜索” – 通过在搜索中多次调用facet
方法,可以生成多个方面(为用户提供进一步搜索优化的选择 ); 然后,您可以使用with
方法使用带有范围限制的facet选项,您也可以根据需要多次调用。
说到wiki,太阳黑子维基中提供了大部分信息(有更多解释):