mysql - Rails 3 精细搜索

标签 mysql ruby-on-rails search rest cookies

我有一个 Rails 应用程序。主页搜索电影数据库并在搜索查询的结果页面中显示结果。

现在,结果页面中有一个电影列表(比如 5 个),结果页面在左侧栏中显示电影的属性。

例如,

==================电影结果页面================

左侧边栏

流派

喜剧(link_to) 恐怖(link_to)

语言

英文(link_to) 德语(link_to)

结果集

1 愤怒管理 2 美国派 3 邪恶之死 4 怨恨 5 Du riescht so gut

================================================== ======

现在,在第一次搜索之后,我的搜索 Controller 有一个 @movieid 数组,其中包含这 5 个 movieid(上面提到的)。左侧栏有过滤器可以进一步过滤。 使用 @movieid 数组,我在结果集中列出了电影。

如果我点击“喜剧”链接,我希望结果页面仅显示“1. 愤怒管理”和“2. 美国派”。

如果我点击“德语”链接。它应该只显示“5. Du riescht so gut”。就是这样。

现在, 我对以下选项感到困惑, 1.我正在考虑通过 link_to 将genre_id和@movieid数组作为参数传递。 2.使用cookie[:store]保存@movieid数组 3. 将@movieids 存储在数据库中并检索。

我不知道如何处理这个问题。请记住,我的 @movieid 数组也可以包含 100000 个 id。

帮助我实现最佳实践和性能。

谢谢!

编辑:

我可以使用Mysql Views来存储结果集吗?问题是,如果 100000 个用户同时搜索,会创建很多 View ,这样可以吗?好的做法是什么?

最佳答案

我想,我做得很好!

回答我的问题:

  1. 从第一个主搜索页面,如果我在电影表上运行搜索查询并从表中的 5000 部电影中获取 300 条记录,然后我通过 Rails 方法在 mysql 数据库中动态创建一个 View , AR::Base.connection.execute() 保存 300 部搜索到的电影的 movie_ids。

  2. 现在,在第二页中,如果用户根据语言或流派过滤 300 个结果,我会缩小搜索范围,再次对创建的 View 而不是 MOVIES 表进行搜索。这是通过将 URL 传递给 link_to 帮助程序后获取 language_id 和 Genre_id 来完成的。

  3. 我从每个浏览器获取一个 session_id ,并在该 id 前面附加一个字母,该字母将用作我的 View 名称。

  4. 如果用户访问主页或通过搜索页面并找到确切的产品,我将放弃我的 View ,并且我将保留一个超时时间来放弃我的 View ,比如 1 小时,每天我都会放弃前一天创建的 View 。

我从 Ryan 那里听说,坚持用户搜索是一个很好的做法。我对此也很感兴趣。现在我想我已经实现了。请用我的方法中的所有负面因素来打击我,我想在这里经营一家公司。

谢谢!

编辑:

忘记了我对阿席达卡的感激之情。 当然我添加了 will_paginate gem。它工作正常。

提示:在 will_paginate 中,如果您使用 :per_page => 10 列出 83 部电影,那么您将无法显示 9 页中第一页的电影总数(10+10+.... +3)。如果你想像电影(83)那样做。然后,@movies.total_entries.to_s 会有所帮助。

也谢谢你!

关于mysql - Rails 3 精细搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9587186/

相关文章:

django - 哪些应用程序/解决方案最适合 Django 中基于模型的搜索?

ruby-on-rails - 开发 CRUD Web 应用程序时的典型瓶颈是什么?

ruby-on-rails - 当前未安装“rvm”。 (在一个终端上工作,但在另一个终端上不工作)

ruby-on-rails - 运行 sudo gitlab-ctl reconfigure 后服务器重启

ruby-on-rails - Ruby on Rails 中的文本搜索

phpmyadmin token 不匹配

mysql - 关于我的 Deck Builder 数据库的建议

php - 在同一页面上第二次选择查询不工作

mysql - 使用错误的排序规则连接到 mysql 服务器?

Android SearchView.onQueryTextSubmit(字符串查询)