2013-07-30 76 views
1

我正在開發一個iOS應用程序,其中包含約600本書,每本約90頁(.pdf文檔)。我採取的方法是將所有文本放在一個數據庫中,然後分段顯示。爲了提高搜索速度,我使用CLucene索引了數據庫中所有需要的數據並實現,現在我有兩個數據副本,並且我從索引中獲得了更好的訪問時間,而不是預期的數據庫。建議只使用沒有數據庫的Lucene索引嗎?

我的問題是:建議還是推薦使用沒有數據庫的應用程序,並且只要從索引中提取所有數據,即使在搜索沒有執行的情況下也是如此。這樣可以提高我的應用程序的速度和大小,因爲數據庫不會被包含在內,但這是否可取?

我非常感謝任何關於此方面的協助/建議,因爲我在這方面經驗不足,也是我第一次使用任何類型的搜索API。

回答

1

別擔心關於重複數據。你必須注意的事情是確保只有必要的數據存儲在你的Lucene索引中。因此,如果您實際上並不直接從索引顯示完整章節,請不要存儲它們,只需索引它們即可。這樣,它不是重複的數據。

另外,如果您希望數據可編輯,可維護和可備份,您會發現更長期的內容,將它更容易保存在數據庫中。但是,這並不意味着您必須使用像MySQL或MS SQL這樣的關係數據庫。還有很多NoSQL數據庫選項。

我不會詳細討論NoSQL的優點和缺點,因爲您可以通過谷歌搜索。但你可以使用MongoDB來存儲和提供所有的數據,而不是使用你的數據庫 Lucene,它仍然是一個非常快速和可擴展的解決方案。

+0

非常感謝。更關心的是性能,因爲sqlite數據庫現在顯示加載圖書滯後2-4秒。我不知道iOS應用程序可以使用sqlite以外的數據庫。我實際上以非關係的方式存儲sqlite數據。關於數據,我希望書籍每4-6個月添加到系統中。存儲的選擇會對此產生什麼影響? – dsgrant07

+0

顯示數據的最快方式意味着將數據存儲在希望顯示的表單中,因此它可能已經很好。但是,如果您遇到這樣的延遲,您可能需要查看經常重複的特定數據,將其轉換爲更多關係格式,然後對其進行緩存。 – Digbyswift