使用大型MySQL数据库(数百万条记录)为xcart创建即时搜索模块,而不使用solr或弹性搜索
我们安装了x-cart 4.6.6,我们希望启用即时产品名称、说明、sku、品牌、型号、年份和其他一些相关信息。
问题是我们的数据库很大(超过100万个产品),而且由于它使用%通配符开始搜索,因此接收结果需要长达6秒的时间。有人能告诉我如何改进这个或其他选项吗。有3个预构建的solr插件,但价格昂贵,网站也很阴暗,所以我相信支持也是如此。可以使用哪些方法来提高速度,这对转化率至关重要。请让我知道您需要诊断问题和解决方案的任何其他信息。谢谢,安东尼。
为了进一步澄清,我们有一个左上角的搜索框,使用JS&PHP连接到mysql并提取结果。我们的开发人员已经通知我们,因为它对定义较少的搜索(如2个字母的搜索)使用通配符会减慢搜索速度。
您可能已经注意到,MySQL对全文搜索的支持非常有限。不仅仅是在速度方面。MySQL FULLTEXT索引和搜索功能缺乏许多重要功能,这些功能现在是任何成熟的搜索引擎都必须具备的:形态学、相关性调整、分面搜索、同义词等等。
由于您所要求的不仅仅是全文搜索,而是产品搜索,因此促销、拼写更正和查询建议等功能也可能是可取的。
我知道你在问题中说过,你想在不使用Solr或Elastic Search的情况下实现你的目标,但我认为,仅仅用PHP+MySQL编写一个快速且功能丰富的产品搜索引擎实际上是不可能的。
我是CloudSearch的创建者——X-Cart商店的产品搜索引擎。在其几年的发展和演变过程中,我们提出了一种云架构,其中包含一组处理X-Cart商店搜索请求的同质服务器。这种架构使我们能够为成千上万的客户提供服务,其中一些客户拥有多达100万种产品。然而,我们的平均搜索请求处理时间约为25ms。
如果您需要对X-Cart商店进行真正快速准确的产品搜索,我建议您考虑从一个强大的全文搜索系统开始:Solr、Elastic search或Spinx。Solr和Elastic Search是我发现功能最完整的两个。
另一种选择是使用现有的综合解决方案之一。即使有商业服务,这也比在Solr或Sphinx或其他开源搜索引擎上构建自己的产品搜索引擎便宜得多。