我应该为SQLite3使用哪个全文搜索包?

Ben*_*ack 7 sqlite full-text-search

SQLite3似乎带有三个不同的全文搜索引擎,称为FTS1,FTS2和FTS3.网站上提供的文档提到FTS1稳定,FTS2正在开发中,您应该使用FTS2.我在网上找到的例子使用FTS3,它在CVS中,而不是与FTS2相比较.全文搜索引擎都没有合并来源,尽我所知.

那么,我的问题是:我应该在SQLite中使用这三个引擎中的哪一个进行全文索引?或者我应该简单地使用像Sphinx这样的第三方工具,还是使用Lucene中的自定义解决方案?

Eri*_*nge 6

截至3.6.21,FTS3已有详细记录,并获得了更正式的可见状态.

FTS3是Windows上标准sqlite DLL构建的一部分,不确定合并源.

我们一直在生产中使用它大约一年没有特别的问题.


Bil*_*win 4

我最近也研究了全文解决方案。看起来 SQLite 目前没有事实上的选择。无论您选择什么,随着各种 FT2、FT3 等解决方案的成熟,您都不可避免地需要重新架构。因此,硬着头皮假设您将来需要进行更多开发,以跟上不断变化的全文技术。

Sphinx Search 尚未直接支持 SQLite。目前(大约 2009 年 8 月)它仅支持 MySQL 和 PostgreSQL。因此,您必须破解自己的 SQLite 连接器,或者将 SQLite 数据迁移到 MySQL 或 PostgreSQL,然后使用 Sphinx 搜索对数据建立索引。我认为有人正在开发 Sphinx 搜索补丁来支持 Firebird,所以如果您愿意卷起袖子,也许这并不难。

另请注意,Sphinx 搜索对于将数据增量添加到索引有一些限制。在决定使用它之前,您应该花一个小时左右的时间阅读该文档。

我也不知道有什么直接方法可以在 Lucene 中索引 SQLite 数据。您可能必须编写自己的代码来处理批量的 SQLite 数据,一次向 Lucene 索引添加一行。这似乎是Lucene无论什么数据库的用法。


更新: Solr是 Lucene 的一个很好的配套技术。Solr 为该搜索引擎提供了许多功能,包括从任何 JDBC 数据源批量加载查询结果数据的能力。