代码之家  ›  专栏  ›  技术社区  ›  Benjamin Pollack Stefan Rusek

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

  •  7
  • Benjamin Pollack Stefan Rusek  · 技术社区  · 16 年前

    sqlite3似乎有三种不同的全文搜索引擎,分别称为fts1、fts2和fts3。网站上提供的文档提到,富时指数1稳定,富时指数2正在开发中,您应该使用富时指数2。我发现在线使用FTS3的例子,它在CVS中,与FTS2相比没有记录。据我所知,所有的全文搜索引擎都没有合并的源代码。

    所以,我的问题是:这三个引擎中,如果有的话,我应该在sqlite中使用哪一个来进行全文索引?或者我应该简单地使用第三方工具,比如斯芬克斯,还是使用Lucene中的自定义解决方案?

    2 回复  |  直到 16 年前
        1
  •  4
  •   Bill Karwin    16 年前

    我最近也研究了全文解决方案。看起来sqlite现在没有事实上的选择。无论您选择什么,随着各种FT2、FT3等解决方案的成熟,都不可避免地需要重新构建它。因此,请咬紧牙关,假设您将来需要进行更多的开发,以跟上不断变化的全文技术的步伐。

    sphinx搜索还没有直接支持sqlite。目前只支持mysql和postgresql(约2009年8月)。因此,您必须对自己的sqlite连接器进行黑客攻击,或者将sqlite数据迁移到mysql或postgresql,然后使用sphinx搜索对数据进行索引。我认为有人正在开发一个狮身人面像搜索补丁来支持火鸟,所以如果你愿意卷起袖子的话,也许就不那么难了。

    还要注意,sphinx搜索在向索引增量添加数据方面有一些限制。在决定使用之前,你应该花一个小时左右的时间阅读这个文件。

    我也不知道在Lucene中索引sqlite数据的任何直接方法。您可能需要编写自己的代码来处理成批的sqlite数据,一次向lucene索引中添加一行。这似乎是Lucene的用法,不管数据库是什么。


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

        2
  •  6
  •   Eric Grange    16 年前

    截至3.6.21日,FTS3已得到充分记录,并获得了更为官方可见的地位。

    FTS3是在Windows上构建的标准sqlite dll的一部分,不确定合并的源代码。

    我们已经在生产上使用了大约一年,没有什么特别的问题。