用户搜索使用MySQL LIKE或集成搜索引擎(如solr,sphinx,lucene等)?

时间:2011-09-23 10:43:56

标签: mysql search lucene solr sphinx

在我的mysql数据库中,我有一个由37,000个(或其左右)用户组成的用户表。

当用户在网站上搜索其他用户时,我会执行一个简单的通配符(即LIKE'{name}%})来返回找到的用户。

使用像solr这样的搜索引擎进行我的“LIKE”搜索会更高效,更快捷吗?此外?我相信solr我可以使用通配符查询(http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/

说实话,目前使用LIKE查询的速度并不慢,但随着用户数量的增加,它会变慢。任何提示或建议都非常感谢。

4 个答案:

答案 0 :(得分:1)

我们在一个月前遇到过类似的情况,我们的数据库大约是33k左右,而且由于我们的引擎是InnoDB,我们无法利用MySQL的全文搜索功能(这一点非常直率)。 / p>

我们决定实施sphinxsearch(http://www.sphinxsearch.com),我们对结果印象深刻(我成了它的'粉丝')。

如果我们使用所有行的许多列(左连接的加载)进行大型索引搜索,我们实际上将查询响应时间减半,而不是MySQL'LIKE'对应的。

虽然我们没有长时间使用它 - 如果你打算为未来的scailablity建造我会推荐sphinx。

答案 1 :(得分:0)

如果搜索字必须至少有3个字符才能开始搜索并将搜索列索引为索引大小为3个字符,则可以加快速度。

答案 2 :(得分:0)

答案 3 :(得分:0)

我们正在为此目的使用solr,因为即使索引了数百万个文档,您也可以在1-2毫秒内搜索。我们用Data Import Handler镜像我们的mysql实例,然后搜索Solr。

正如内维尔指出的那样,全文搜索是内置在mysql中的,但是solr的表现更好,因为它是作为全文搜索引擎诞生的