2009-08-10 61 views
7

SQLite3似乎帶有三種不同的全文搜索引擎,稱爲FTS1,FTS2和FTS3。網站上提供的文件提到FTS1是穩定的,FTS2正在開發中,您應該使用FTS2。我在網上找到的例子使用的是FTS3,它在CVS中,而沒有記錄在FTS2中。據我所知,沒有任何全文搜索引擎與合併來源一起提供。我應該使用SQLite3的全文搜索包嗎?

所以,我的問題:這三個引擎中的哪一個(如果有的話)應該用於SQLite中的全文索引?或者,我應該只使用第三方工具,如Sphinx,還是在Lucene中使用自定義解決方案?

回答

4

我最近也在研究全文解決方案。看起來SQLite現在沒有事實上的選擇。無論您選擇什麼,隨着各種FT2,FT3等解決方案的成熟,您不得不重新設計架構。因此,咬緊牙關,假設您將來需要做更多的事情來跟上不斷變化的全文技術。

Sphinx Search尚未直接支持SQLite。它現在僅支持MySQL和PostgreSQL(約2009年8月)。所以你必須破解你自己的SQLite連接器,或者將SQLite數據遷移到MySQL或PostgreSQL,然後用Sphinx Search來索引數據。我認爲有人正在開發一個Sphinx Search補丁來支持Firebird,所以如果你願意捲起袖子,也許並不那麼難。

另外請注意,Sphinx搜索在向索引增量添加數據方面有一些限制。在決定使用文檔之前,您應該花一個小時左右的時間閱讀文檔。

我不知道任何直接的方式索引SQLite數據在Lucene中。您可能需要編寫自己的代碼來處理批量的SQLite數據,並逐行向Lucene索引添加行。無論數據庫是什麼,這似乎都是Lucene的用法。


更新:Solr是一個偉大的同伴技術Lucene的。 Solr爲該搜索引擎提供了許多功能,包括從任何JDBC數據源批量加載查詢結果數據的功能。

+1

我認爲sqlite3 fts3比任何外部解決方案更可取。更少的運動部件。從fts2切換到fts3並不像將獅身人面像與其更新限制或其他外部解決方案集成一樣困難。 – 2009-10-04 13:15:15

+1

@Seun:我同意 - 有點。 Sphinx Search確實需要安裝另一個軟件,而fts3則內置在SQLite中。但是,fts3並未嵌入到默認版本中,因此您必須自行重新編譯SQLite。而fts3是一個*虛擬表*類型,無論如何你都必須手動將源表中的數據拷貝到fts3表中。無論你如何做,它都有一些移動部件。 – 2009-10-04 16:22:33

+0

FTS3是官方DLL的一部分,現在也是FTS4。 – 2011-01-04 05:31:53

6

從3.6.21開始,FTS3就有了很好的記錄,並且獲得了更爲正式的可見狀態。

FTS3是在Windows上構建的標準sqlite DLL的一部分,對混合源不確定。

我們一直在生產中使用它約一年,沒有特別的問題。