mysql - 用户搜索使用MySQL LIKE还是集成搜索引擎(如solr、sphinx、lucene等)?

标签 mysql search lucene solr sphinx

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

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

使用诸如 solr 之类的搜索引擎来执行我的“喜欢”搜索是否会更高效、更快捷?此外?我相信 solr 我可以使用通配符查询(http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/)

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

最佳答案

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

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

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

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

关于mysql - 用户搜索使用MySQL LIKE还是集成搜索引擎(如solr、sphinx、lucene等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7527778/

相关文章:

search - 如何避免遗传算法中的无效搜索空间?

ruby-on-rails - 连接 Tomcat、Solr 和 sunspot_rails 之间的点

php - ZendSearch Lucene bool 查询不能正确处理数字

mysql - 使用 MySQL join 显示不相关的记录

mysql - 无法添加外键约束,我应该如何解决这个错误?

database - 全文搜索与标准数据库搜索

java - 在 Apache Lucene 6.3 中覆盖 Analyzer 类的方法时如何访问在 tokenStream 方法中传递的读取器

MYSQL "create match on X date if team A and team B are free"使用过程和事务

php - SQL 注入(inject)保护...语句的第二部分不起作用

sql - 当使用 MySQL 的匹配...针对全文搜索执行 "laptop"搜索时,如何匹配 "laptops"和 "laptop"?