【问题标题】:User search use MySQL LIKE or integrate a search engine (such as solr, sphinx, lucene etc.)?用户搜索使用 MySQL LIKE 还是集成搜索引擎(如 solr、sphinx、lucene 等)?
【发布时间】:2011-11-23 13:47:56
【问题描述】:

在我的 mysql 数据库中,我有一个包含 37,000 个(或大约)用户的用户表。

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

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

说实话,目前使用 LIKE 查询并没有那么慢,但是随着用户数量的增长,它会变得更慢。非常感谢任何提示或建议。

【问题讨论】:

标签: mysql search lucene solr sphinx


【解决方案1】:

大约一个月前我们遇到过类似的情况,我们的数据库大约是 33k~ 由于我们的引擎是 InnoDB,我们无法使用 MySQL 全文搜索功能(这很生硬)。

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

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

虽然我们使用它的时间不长 - 如果您要为未来的可扩展性进行构建,我建议您使用 sphinx。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      它实际上已经内置在 MySQL 中:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

      【讨论】:

        【解决方案4】:

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

        正如 neville 指出的那样,全文搜索是内置在 mysql 中的,但是 solr 的性能要好得多,因为它是作为全文搜索引擎诞生的

        【讨论】:

        • 嗨 Samuele,要读一段相当长的文字。您有 dataConfig xml 文件的简单示例吗?谢谢! :-)
        • 您应该查看示例 (wiki.apache.org/solr/DataImportHandler#Full_Import_Example),因为我们正是从该示例开始的 :) 我们的数据配置有点复杂,在这里发布它是没有用的(它会比任何东西都更混乱) ..您基本上选择了您的驱动程序(jdbc:mysql for mysql),配置要检索的字段列表并使用标准mysql语法配置查询:)
        猜你喜欢
        • 1970-01-01
        • 2010-11-26
        • 2010-10-30
        • 2010-12-26
        • 2011-07-16
        • 2023-01-30
        • 1970-01-01
        • 2011-03-24
        相关资源
        最近更新 更多