在我的mysql数据库中,我有一个用户表,由37,000个(或大约)用户组成。
当一个用户在站点上搜索另一个用户时,我执行一个简单的like通配符(即LIKE '{name}%})来返回找到的用户。
使用像solr这样的搜索引擎来做我的“喜欢”搜索,会不会更高效、更快?更进一步?我相信在solr中我可以使用通配符查询(http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/)
老实说,目前使用LIKE查询并不是那么慢,但是随着用户数量的增加,它会变得更慢。任何提示或建议都是非常感谢的。
发布于 2011-09-23 21:54:54
大约一个月前我们遇到过类似的情况,我们的数据库大约有33k~,由于我们的引擎是InnoDB,我们不能使用MySQL全文搜索功能(这是相当直率的)。
我们决定实现sphinxsearch (http://www.sphinxsearch.com),结果给我们留下了深刻的印象(我成了它的粉丝)。
如果我们对所有行的许多列(左连接负载)进行大型索引搜索,那么相对于MySQL的“LIKE”对应项,我们实际上将查询响应时间减半。
尽管我们使用它的时间不长--如果你打算为未来的灾难而构建,我推荐你使用sphinx。
发布于 2011-09-23 18:51:43
如果搜索字必须至少包含3个字符才能开始搜索,并使用3个字符的索引大小对搜索列进行索引,则可以加快速度。
发布于 2011-09-23 19:07:47
它实际上已经内置到MySQL中了:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
https://stackoverflow.com/questions/7527778
复制相似问题