我知道MySQL 5.6仍处于测试版阶段,但有没有人使用过新的InnoDB FTS引擎?它与Sphinx之类的工具相比如何?
谢谢 Jason
我知道MySQL 5.6仍处于测试版阶段,但有没有人使用过新的InnoDB FTS引擎?它与Sphinx之类的工具相比如何?
谢谢 Jason
我从未使用过Sphinx,但是我已经在一个包含约170,000行记录的Innodb表上尝试了MySQL 5.6 FTS。我在name列上建立了一个FTS索引(其中包含一个人的所有名字)。为了在字符串的任何位置查找单词,MATCH(name) AGAINST("+word*") IN BOOLEAN MODE
比使用name LIKE "word%" OR name LIKE "% word"
要快得多(在我的情况下快了2-3倍)。
然而,在进行连接时,请检查EXPLAIN以查看是否实际使用了FTS索引。似乎MySQL优化器并不擅长猜测何时应该使用FTS索引。
全文检索功能(FULLTEXT)过去需要从labs.mysql.com下载特殊版本,现在已经是主流的MySQL构建版本的一部分,包括5.6.5及以上版本(仍为测试版)。全文检索函数文档现在包含InnoDB特定的细节:MySQL全文检索函数
请注意,Sphinx搜索引擎是为MySQL全文搜索开发的一个特性...
这里您可以比较一下Sphinx和MySQL FTS: http://www.percona.com/files//presentations/opensql2008_sphinx.pdf
这是InnoDB FTS与MyISAM性能测试的比较: http://blogs.innodb.com/wp/2011/07/innodb-fts-performance/
InnoDB在索引方面稍微快了一点,但它的性能仍然远远落后于Sphinx...