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