【发布时间】:2013-02-19 14:30:28
【问题描述】:
在我们的新网站(购物网站)上,我们将使用 Solr 作为我们网站的搜索引擎。在 Solr 索引中,我们保留了产品 ID 列表和每个产品的关键字列表。搜索查询是针对关键字进行的。
Solr 返回产品 ID 列表。然后将这些 id 插入到 MySQL 查询中以从数据库中选择所有产品数据。 MySQL 还处理结果的排序。例如,MySQL 查询可能如下所示:
SELECT * FROM product WHERE id IN (1,4,42,32,46,...,39482) ORDER BY price ASC
我们在网站上有大约 100,000 种产品。当有几千个结果时,此方法工作正常,但当有 - 例如 - 50,000 个结果时,此方法会变得很慢。
我的假设是瓶颈是“WHERE IN”子句。一个长期的解决方案是将所有产品数据移动到 Solr,以便它可以处理结果排序并将优化过滤器应用于搜索(例如,也许用户只想查看某个价格范围内的产品)。但是,我们对 Solr 缺乏经验,需要短期修复才能实施。
一种选择是在短期内放弃 Solr,将关键字存储在 MySQL 的表中,并使用 FULL-TEXT 搜索对此进行搜索。
我是否缺少其他选项?
【问题讨论】:
-
你能创建一个
VIEW吗? -
不是从 select 语句创建的 VIEW 吗?我不知道如何使用 Solr 查询的结果来创建视图。 Solr 返回一个产品 ID 数组。