2011-09-23 118 views
1

在我的MySQL数据库我有一个由37,000(或大约)用户组成的用户表。用户搜索使用MySQL LIKE或集成搜索引擎(如solr,sphinx,lucene等)?

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

使用搜索引擎这样的solr来做我的'LIKE'搜索会更有效率和更快吗?此外?我相信solr我可以使用通配符查询(http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/

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

+0

http://stackoverflow.com/questions/4944174/mysql-full-text-or-sphinx-or-lucene-or-anything-else http://stackoverflow.com/questions/4774227/fulltext-search- with-mysql-ft-or-sphinx http://stackoverflow.com/questions/6820527/lucene-or-mysql-full-text-search –

+0

[全文搜索引擎的优缺点Lucene,Sphinx,Postgresql全文搜索,MySQL全文搜索?](http://stackoverflow.com/questions/737275/pros-cons-of-full-text-search-engine-lucene-sphinx-postgresql-full-text-searc) –

+0

@MauricioScheffer--这些问题不会回答我的问题,因为它正在搜索单词。我正在做一个通配符搜索,并想知道它是否存在于各种搜索服务器中,以及它是否比像wilcard这样的MySQL更高效。 – Flukey

回答

1

我们搞一个类似的情况在一个月前,我们的数据库大概在33k左右,并且由于我们的引擎是InnoDB,所以我们无法利用MySQL全文搜索功能(它非常直截了当)。

我们决定实施sphinxsearch(http://www.sphinxsearch.com),结果给我留下了深刻的印象(我变得相当“迷恋”了)。

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

虽然我们没有长期使用它 - 如果您打算为将来的可用性打造一个狮身人面像。

0

如果搜索词必须至少有3个字符才能开始搜索,并且索引大小为3个字符,那么您可以加快搜索速度。

0

我们使用Solr的用于此目的,因为你可以在1-2毫秒,即使有索引的文件milions搜索。我们使用Data Import Handler来镜像我们的mysql实例,然后我们搜索Solr。

为内维尔指出,全文搜索是内置在MySQL,但Solr的表演方式更好,因为它的诞生为全文搜索引擎

+0

Hi Samuele,一段相当长的文字。你有一个简单的例子你的dataConfig XML文件?谢谢! :-) – Flukey

+0

你应该检查一下这个例子(http://wiki.apache.org/solr/DataImportHandler#Full_Import_Example),因为我们刚开始的时候是这样的:)我们的dataconfig有点复杂,在这里发布它是没用的(它)会基本上选择你的驱动程序(jdbc:mysql for mysql),配置你想要检索的字段列表,并用标准的mysql语法配置查询:) –