SQLite3似乎带有三个不同的全文搜索引擎,称为FTS1,FTS2和FTS3。网站上提供的文档提到FTS1稳定,FTS2正在开发中,您应该使用FTS2。我在网上找到的例子使用FTS3,它在CVS中,而不是与FTS2相比较。全文搜索引擎都没有合并来源,尽我所知。
所以,我的问题:这三个引擎中哪一个(如果有的话)应该用于SQLite中的全文索引?或者我应该简单地使用像Sphinx这样的第三方工具,还是使用Lucene中的自定义解决方案?
答案 0 :(得分:6)
截至3.6.21,FTS3已有详细记录,并获得了更正式的可见状态。
FTS3是Windows上标准sqlite DLL构建的一部分,不确定合并来源。
我们一直在生产中使用它大约一年没有特别的问题。
答案 1 :(得分:4)
我最近也研究过全文解决方案。看起来SQLite现在没有事实上的选择。无论您选择什么,随着各种FT2,FT3等解决方案的成熟,您不得不重新构建它。所以咬紧牙关,假设您将来需要做更多的开发,以跟上不断变化的全文技术。
Sphinx Search尚未直接支持SQLite。它现在只支持MySQL和PostgreSQL(大约2009年8月)。因此,您必须破解自己的SQLite连接器,或者将SQLite数据迁移到MySQL或PostgreSQL,然后使用Sphinx Search索引数据。我认为有人正在开发Sphinx Search补丁以支持Firebird,所以如果你愿意卷起袖子,也许并不是那么难。
另请注意,Sphinx Search在逐步向索引添加数据方面存在一些限制。在您决定使用之前,您应该花一个小时左右阅读文档。
我不知道在Lucene中索引SQLite数据的任何直接方法。您可能必须编写自己的代码来处理批量的SQLite数据,一次向Lucene索引添加一行。无论数据库是什么,这似乎都是Lucene的用法。
更新: Solr是Lucene的绝佳伴侣技术。 Solr为该搜索引擎提供了许多功能,包括从任何JDBC数据源批量加载查询结果数据的能力。