2012-12-31 16 views
5

這更多的是一個設計問題 - 而不僅僅是一個編碼問題。Android搜索:使用FTS表以及常規的SQLite數據庫表

我已經有一個存儲SQLite數據庫表中的數據的應用程序。現在我想添加搜索功能。

據我所知,爲了啓用搜索功能,我需要FTS表。

,我有表如下(不完全一樣,但給人很類似的例子):

內容表 - 有列,如:ID,標題,內容,創建人,創建日期,更改者,已變更等等

評論表 - 有列,如:身份證,評論,創建人,創建時間,在回覆等等

像用戶數據,元數據,分類其他表,標籤等。

這裏我只想要標題,內容和評論的搜索功能。很明顯,我不需要像其他列創建的搜索能力等。

哪一個是最好的選擇?

  1. 我應該放棄舊錶並創建唯一的FTS表嗎?
  2. 我應該繼續使用舊錶格並創建僅支持搜索功能的新FTS表格。

的問題,我有選擇1看到的是:

  • 這是一個顛覆性的改變!
  • 我有許多非文本列,我不打算執行搜索的多個表的集合。我如何在FTS中對它們進行建模?
  • 現在我正在利用RDBMS的功能,如Join等,我認爲如果我完全切換到FTS表格,我將無法做到這一點!

問題,我與選項2看到的是:

  • 它會導致重複的表格 - 並且將佔用更多的內存/空間!
  • 每次我插入/更新/修改我的SQL表中的條目時,我必須在FTS表中做同樣的更改。

那麼,什麼是最好的選擇? 有沒有任何機構面臨類似的挑戰?

回答

9

對於非FTS搜索,無法高效地查詢FTS表,因此選項1不存在。

整個FTS表本質上是一個索引。這是一個速度/空間的折衷,而進行全文搜索的能力通常是值得的。 爲避免將原始文本存儲兩次,請使用external content tables

要保持原始和FTS表同步,請使用觸發器。

+0

感謝您指出相關部分...顯然,我沒有閱讀完整的文檔.. –