脚本
我在销售产品的网站上有搜索工具.
该页面是使用PHP和MySQL构建的,它针对将10个表连接在一起的Merged View进行搜索.视图中有大约12,000条记录,每条记录有20个字段.
用户可以使用多个(10-15)选择菜单搜索符合特定条件的产品.
然后,数据库根据产品主键的选择菜单值返回结果.
这一切都很好,并且速度足够快.
问题
但是,在同一页面上,我还包含了一个文本框,因此用户可以手动输入他们要搜索的内容而不是使用菜单.
当用户输入实际单词而不是通过菜单选择PK时,数据库必须进行单词搜索.
由于缺乏关于更好方法的知识,我将外国标准表中的所有文本值都整合到一个大字段中.
然后,文本框将搜索此concantenated字段中的单词.
再次,这可以正常工作,但将典型的搜索时间从0.1秒更改为2.0秒.
我已经将合并视图使用的表中的所有字段编入索引以努力改善时间,但这根本没有帮助.
题
由于谷歌可以在1秒内找到22,200,000页的“溢出”一词,而我的数据库需要2秒才能搜索一个单词,而不是12,000条记录.
如何改进数据库的布局和搜索方法?
最佳答案 在这种情况下我强烈推荐
Lucene Solr.它有一个非常适合这项任务的反向索引系统.您可以将它与PHP一起使用(通过前端与它连接).
仔细研究一下(至少看看一些教程),你会惊讶于你的运行速度.