由于用户使用过多的过滤器约束搜索,因此处理搜索的模式很少或没有结果。它涉及显示搜索查询的所有组件,其中包含该组件单独或每个组件组合的命中数。
例如,如果我正在搜索音乐数据库,并且我根据以下标准构建了搜索查询:
我会得到没有比赛,因为这三个不一致。但是,删除组件确实允许匹配。
因此,不仅仅显示“无结果”,更好地处理这种情况将是显示查询的每个组成部分的命中数:
Martin Hannett | Electronica | 1975年(2结果)
Martin Hannett | Electronica | 1975年(33结果)
鉴于搜索词可能包含多个组件,如何在查询方面高效完成?要获取每个组件的数字,需要为每个组件执行单独的查询,这意味着查询效率低下?我正在使用Rails和Postres以及PGSearch,但我认为这个问题更为通用。
答案 0 :(得分:1)
您可以利用PostgreSQL数据库前面的Redis等键值存储来返回Redis的搜索结果计数。 Redis针对快速随机读/写进行了优化。 Ryan Bates在autocomplete search上做了一集,以防止对主数据库进行多次查询。这种情况类似。