2011-07-20 85 views
0

我在为Rails应用程序实现特殊类型的搜索时遇到问题。我正在研究一个成就系统,您可以在搜索表单中搜索一组用户(例如,查询为“Ross,Adam,Jake”),并返回用户解锁的所有常见成就(例如,如果用户Ross,Adam和Jake都有一个名为“你是赢家!”的成就)。我有三个表格,一个表示成就,一个表示用户,一个表格。我们已经测试了这些关联,所以我们知道这些作品。在Rails中返回搜索结果

我的第一个想法是将搜索条件放在一个数组中,并获得数组中每个项目的搜索结果,并将它们放入各自的“搜索结果数组”中。然后,我正在考虑搜索搜索结果数组1中的每个项目,以查看它是否出现在其他结果数组中。出现在所有三个搜索结果数组中的对象将被返回并显示在页面上。

有没有一种简单的方法来实现这一点,而不写一大堆我自己的代码?有一些我应该知道的功能吗?任何帮助将不胜感激!

+0

你看着狮身人面像 - http://sphinxsearch.com/ – KMC

+0

为此,您可以使用连接和使用的find_by_sql编写SQL呼叫有效记录。 – naren

回答

0

那么,Ransack和它的前身(MetaSearch)都是创建复杂搜索表单的有用宝石。

一般来说,我认为你想为数组中的用户标识符选择不同的成就标识符。关于我的头顶,我不太清楚你应该怎么写......别人可能知道。

查看MetaSearch(更成熟)的文档,看看是否看到适合的模式,如果不检查Ransack(更高级的)。

0

你可以使用一些自动完成的插件为用户名称和动态地将名称转换为ID,这样你就不必处理将用户名转换为后端的ID。

对于常见的成就,如果用户只能获得一次成就,那么将结果汇总到连接表中并用结果id对结果进行计数即可。

您可以提供更详细的答案更详细的信息。 :)

0

您可以使用Sunspot这是允许使用Ruby和Rails容易Solr的集成