Ruby on rails 如何使用Sunspot设置具有多对多关系的方面搜索?
我以前没有实现过搜索功能,感觉有点卡住了。我有一个太阳黑子搜索功能,它可以根据关键字查找结果-这非常有效-但是我现在想实现multi-select方面功能,但我甚至不知道如何设置基本方面搜索 我有一种多对多的关系(在rails中而不是在现实生活中): 班上的人有很多:技能,:通过=>经验(反之亦然) 这是我无法工作的基本例子。它会生成以下错误:Ruby on rails 如何使用Sunspot设置具有多对多关系的方面搜索?,ruby-on-rails,search,many-to-many,faceted-search,sunspot,Ruby On Rails,Search,Many To Many,Faceted Search,Sunspot,我以前没有实现过搜索功能,感觉有点卡住了。我有一个太阳黑子搜索功能,它可以根据关键字查找结果-这非常有效-但是我现在想实现multi-select方面功能,但我甚至不知道如何设置基本方面搜索 我有一种多对多的关系(在rails中而不是在现实生活中): 班上的人有很多:技能,:通过=>经验(反之亦然) 这是我无法工作的基本例子。它会生成以下错误: Sunspot::UnrecognizedFieldError: No field configured for People with name 's
Sunspot::UnrecognizedFieldError: No field configured for People with name 'skill_ids'
如何创建指向:skill\u id的链接
我想我一定是在模型中遗漏了一些引用——但我找不到任何引用关系ID的示例。我发现的大多数示例在使用facet功能时都使用了该模型中已有的列
- 我如何才能使基本实现正常工作
- 我如何在视图中使用它?我是否必须调用hits.facet并迭代这些技能?显示此内容的代码是什么样子的
- 如何选择要搜索的多个方面
- 我应该把这个放到社区维基上吗
谢谢你抽出时间 任何你想过滤、刻面或排序的东西,太阳黑子都需要知道。因此,在您的模型中:
searchable do
text :first_name, :surname
integer :skill_ids, :multiple => true, :references => Skill
end
控制器中的#搜索呼叫看起来正确。在你看来,你应该做以下几点:
- @search.facet(:skill_ids).rows.each do |row|
= row.instance.name
row.instance
将返回该行值所引用的技能实例(这就是:references
选项在可搜索
定义中所做的)
我不确定“选择要搜索的多个方面”是什么意思——在搜索中多次调用facet
方法,可以生成多个方面(为用户提供进一步搜索优化的选择);然后,您可以使用with
方法将其方面选择与范围限制结合使用,您也可以根据需要多次调用该方法
说到维基,这些信息的大部分都可以在太阳黑子维基上找到(有更多的解释):
searchable do
text :first_name, :surname
integer :skill_ids, :multiple => true, :references => Skill
end
- @search.facet(:skill_ids).rows.each do |row|
= row.instance.name