任何第三方搜索引擎(全文搜索等)都能与InnoDB表一起使用吗?

时间:2011-08-03 16:00:28

标签: mysql full-text-search innodb django-haystack

我知道,InnoDB表不支持全文搜索。所以我想到使用第三方搜索引擎,如solr,xapian或whoosh。这些第三方工具与InnoDB表一样可以正常工作,因为它们可以与MyIsam表一起使用吗?我需要找到,例如拼写建议和类似的字符串...

3 个答案:

答案 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就可以了。

其他第三方引擎以类似的方式工作。

相关问题