Ruby on rails 如何使用Sunspot设置具有多对多关系的方面搜索?

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

我以前没有实现过搜索功能,感觉有点卡住了。我有一个太阳黑子搜索功能,它可以根据关键字查找结果-这非常有效-但是我现在想实现multi-select方面功能,但我甚至不知道如何设置基本方面搜索

我有一种多对多的关系(在rails中而不是在现实生活中):

班上的人有很多:技能,:通过=>经验(反之亦然)

这是我无法工作的基本例子。它会生成以下错误:

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
方法将其方面选择与范围限制结合使用,您也可以根据需要多次调用该方法

说到维基,这些信息的大部分都可以在太阳黑子维基上找到(有更多的解释):


谢谢!我在wiki或其他任何地方都找不到对:多个部分的引用-一定是使用了错误的搜索词或其他东西。你对我所说的“选择要搜索的多个方面”的意思有了正确的理解——换言之:通过多个选择进行过滤。wiki现在对我来说有意义了,它有一个可供测试的工作演示!接下来我将尝试添加过滤功能:我认为我可以创建一个链接并为其他方面传入参数,这是正确的吗?还是说这还有很长的路要走?再次感谢!
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