我有一个网站(内置于php),我在mysql表中有大约一百万条记录。有一个非常复杂的“高级”搜索,它允许以数百种(甚至数千种不同的方式)搜索,排序和排序数据。
不幸的是,mysql搜索不是那么好,而且非常慢。平均搜索目前需要5秒,而我可以使网站功能的唯一方法是将所有搜索缓存一周(目前只有超过110万个缓存文件用于搜索)。我有“ghetto模糊搜索”,我通过soundex()函数实现。
我想知道如何用更快的速度替换基于mysql的搜索,以及能够返回准确结果的东西。我还需要输出完全可换肤,因为结果页面不仅仅是文本,还有图片和复杂的CSS。
我看了狮身人面像,但那里没有模糊搜索,我非常想拥有。
答案 0 :(得分:0)
SQL不适用于您正在执行的查询类型,当然不是大规模的。我的建议如下:
将所有表格编入Apache Solr索引。 Solr是一个使用Lucene构建的FOSS搜索服务器,可以在几毫秒或更短的时间内轻松查询索引。它支持您需要的几乎任何类型的查询:模糊,通配符,接近等。
由于Solr提供的RESTful(HTTP)API应该可以轻松集成到您所在的任何平台中。