处理没有结果的搜索

时间:2013-12-12 22:55:15

标签: ruby-on-rails database search

由于用户使用过多的过滤器约束搜索,因此处理搜索的模式很少或没有结果。它涉及显示搜索查询的所有组件,其中包含该组件单独或每个组件组合的命中数。

例如,如果我正在搜索音乐数据库,并且我根据以下标准构建了搜索查询:

  1. 制片人 - Martin Hannett
  2. 类型 - Electronica
  3. 年 - 1977
  4. 我会得到没有比赛,因为这三个不一致。但是,删除组件确实允许匹配。

    因此,不仅仅显示“无结果”,更好地处理这种情况将是显示查询的每个组成部分的命中数:

    Martin Hannett | Electronica | 1975年(2结果)

    Martin Hannett | Electronica | 1975年(33结果)

    鉴于搜索词可能包含多个组件,如何在查询方面高效完成?要获取每个组件的数字,需要为每个组件执行单独的查询,这意味着查询效率低下?我正在使用Rails和Postres以及PGSearch,但我认为这个问题更为通用。

1 个答案:

答案 0 :(得分:1)

您可以利用PostgreSQL数据库前面的Redis等键值存储来返回Redis的搜索结果计数。 Redis针对快速随机读/写进行了优化。 Ryan Bates在autocomplete search上做了一集,以防止对主数据库进行多次查询。这种情况类似。