在我的mysql数据库中,我有一个由37,000个(或其左右)用户组成的用户表。
当用户在网站上搜索其他用户时,我会执行一个简单的通配符(即LIKE'{name}%})来返回找到的用户。
使用像solr这样的搜索引擎进行我的“LIKE”搜索会更高效,更快捷吗?此外?我相信solr我可以使用通配符查询(http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/)
说实话,目前使用LIKE查询的速度并不慢,但随着用户数量的增加,它会变慢。任何提示或建议都非常感谢。
答案 0 :(得分:1)
我们在一个月前遇到过类似的情况,我们的数据库大约是33k左右,而且由于我们的引擎是InnoDB,我们无法利用MySQL的全文搜索功能(这一点非常直率)。 / p>
我们决定实施sphinxsearch(http://www.sphinxsearch.com),我们对结果印象深刻(我成了它的'粉丝')。
如果我们使用所有行的许多列(左连接的加载)进行大型索引搜索,我们实际上将查询响应时间减半,而不是MySQL'LIKE'对应的。
虽然我们没有长时间使用它 - 如果你打算为未来的scailablity建造我会推荐sphinx。
答案 1 :(得分:0)
如果搜索字必须至少有3个字符才能开始搜索并将搜索列索引为索引大小为3个字符,则可以加快速度。
答案 2 :(得分:0)
它实际上已经内置于MySQL:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
答案 3 :(得分:0)
我们正在为此目的使用solr,因为即使索引了数百万个文档,您也可以在1-2毫秒内搜索。我们用Data Import Handler镜像我们的mysql实例,然后搜索Solr。
正如内维尔指出的那样,全文搜索是内置在mysql中的,但是solr的表现更好,因为它是作为全文搜索引擎诞生的