2009-08-10 6 views
7

SQLite3には、FTS1、FTS2、およびFTS3という3つの異なるフルテキスト検索エンジンが付属しているようです。ウェブサイトで入手できる文書には、FTS1が安定していること、FTS2が開発中であること、FTS2を使用していることが記載されています。例私は、CVSにあり、FTS2との比較では文書化されていないFTS3をオンラインで使用しています。全文検索エンジンのどれも、私が知る限りでは、合併された情報源はありません。SQLite3にはどのフルテキスト検索パッケージを使用しますか?

私の質問:これらの3つのエンジンのうち、もしあれば、私はSQLiteで全文索引付けに使用する必要がありますか?それとも、代わりにSphinxのようなサードパーティのツールや、Luceneのカスタムソリューションを使うべきですか?

答えて

4

最近フルテキストソリューションも検討しました。 SQLiteには事実上の選択肢がないようです。どのような選択をしても、さまざまなFT2、FT3などのソリューションが成熟するにつれて、再構築する必要があります。だから、弾丸に噛み付いて、今後、フルテキスト技術の変化に追いつくためには、さらなる開発が必要だと考えています。

Sphinx SearchにはSQLiteの直接のサポートはありません。 MySQLとPostgreSQLだけをサポートしています(2009年8月頃)。だから、独自のSQLiteコネクタをハックするか、SQLiteデータをMySQLまたはPostgreSQLに移行し、Sphinx Searchでインデックスを作成する必要があります。私は誰かがFirebirdをサポートするためにSphinx Searchパッチに取り組んでいると思います。あなたの袖を巻き上げようと思えばそれほど難しくないかもしれません。

また、Sphinx Searchにインデックスにデータを徐々に追加するにはいくつかの制限があります。あなたはそれを使用する前に、1時間程度でドキュメントを読んでください。

私は、LuceneでSQLiteデータを直接索引付けする方法についても知らない。おそらく、SQLiteデータのバッチを処理する独自のコードを記述し、Luceneインデックスに行を1つずつ追加する必要があります。これは、データベースが何であっても、Luceneの使用法と思われます。


更新:Solr Luceneのための素晴らしい仲間技術です。 Solrは、任意のJDBCデータソースからクエリ結果データをバルクロードする機能を含む、多くの機能を検索エンジンに提供します。

+1

私はsqlite3 fts3が任意の外部ソリューションより好ましいと思います。移動部品が少なくなります。 fts2からfts3への切り替えは、Sphinxをアップデートの制限や他の外部ソリューションと統合することほど難しくありません。 –

+1

@ Sean:私は同意する - 多少。 Sphinx Searchがもう1つのソフトウェアをインストールする必要がありましたが、fts3はSQLiteに組み込まれています。しかし、fts3はデフォルトビルドに組み込まれていないため、SQLiteを自分で再コンパイルする必要があります。また、fts3は*仮想テーブル*タイプなので、ソーステーブルからfts3テーブルにデータを手動でコピーする必要があります。どのようにしても、動く部分があります。 –

+0

FTS3は公式DLLの一部であり、現在はFTS4と同様です。 –

6

3.6.21から、FTS3は十分に文書化され、より正式に目に見える状態になりました。

FTS3はWindows上で標準的なsqlite DLLビルドの一部ですが、合併したソースについては不明です。

私たちは生産上約1年間、特に問題なく使用してきました。

関連する問題