我知道,InnoDB表不支持全文搜索。所以我想到使用第三方搜索引擎,如solr,xapian或whoosh。这些第三方工具与InnoDB表一样可以正常工作,因为它们可以与MyIsam表一起使用吗?我需要找到,例如拼写建议和类似的字符串...
答案 0 :(得分:1)
第三方全文搜索引擎通常会复制MySQL查询返回的数据,并使用它来填充搜索索引。在这方面,MyISAM和InnoDB数据源没有区别。
几年前,我做了一个演讲Practical Full-Text Search in MySQL。你可能会发现它很有趣。答案 1 :(得分:1)
您可以使用Solr / Lucene对数据库数据进行全文搜索。由于我的MySQL数据库对于快速全文搜索很重要,我决定将mysql和Solr / lucene结合起来。
重要的是要知道,Solr / Lucene不是MySQL插件。因此,您将无法使用典型的MySQL SQL语句搜索fulltext-index。由应用程序启动的全文搜索应该首先将请求发送到第三方全文索引(Solr),该索引返回相关文档的主键。第二步是使用带有Solr结果集中相应主键的where子句对MySQL innoDB运行SQL语句。 该解决方案在我的情况下非常好,比典型的MySQL Myisam全文搜索更快,更快(和更好)。
作为替代方案,您不仅可以索引solr中的数据。您还可以将数据另外存储在solr中。在这种情况下,solr能够返回全文。因此,您不需要从数据库中获取数据,如上例所示。
这些第三方工具与InnoDB表一样可以正常工作,因为它们可以与MyIsam表一起使用吗?
绝对。 Solr有一个DataImportHandler。您可以定义一个SQL语句,以便获取您希望在solr中索引的数据,例如:select * from MyTable;
但请记住:现在(据我所知),没有MySQL solr插件可用。 Solr和MySQL的合作应由应用程序处理。
答案 2 :(得分:0)
Sphinx
支持自己的索引,只需通过发出查询即可及时从MySQL
获取数据。
它甚至不知道底层表结构,只要查询运行并返回结果,Sphinx
就可以了。
其他第三方引擎以类似的方式工作。