用例是这样的:
我想让我的用户从单个文本框中搜索,然后在搜索结果页面上按类组织结果。
例如,假设我为Thinking Sphinx配置了以下模型:Post
,Comment
和User
。 (在我的情况下,我有大约10个模型,但为了清楚StackOverflow,我假装只有3个)
当我进行类似于ThinkingSphinx.search 'search term', :classes => [Post, Comment, User]
的搜索时,我不确定迭代结果并构建我的页面部分的最佳方法。
我的第一个倾向是做类似的事情:
@match_posts
,@matching_comments
或@matching_users
有更好或更有效的方法吗? 谢谢!
答案 0 :(得分:0)
如果您只有3个模型可供搜索,那么为什么不仅使用model.search
而不是ThinkingSphinx.search
。这样可以解决您执行result.is_a?
的问题。这意味着您可以更轻松地处理每个model
显示结果的方式。
答案 1 :(得分:0)
我认为这取决于人们使用您网站的有用之处。在所有模型中运行相同的查询是否有意义?然后ThinkingSphinx.search
可能是最好的,尤其是从绩效角度来看。
那就是说,你想按各自的课程对搜索结果进行分组吗?然后一些排序是必要的。或者你是否将每个类的结果分开,就像GitHub搜索一样?然后拥有单独的集合可能是值得的,就像你已经想到的那样。
在最基本的层面上,您可以返回按相关性而不是类别排序的所有内容,然后根据每个结果呈现略有不同的输出。案例陈述可能对此有所帮助 - 最好在助手和/或可能部分中保留尽可能多的逻辑?