2010-01-10 73 views
11

我正在尋找關於在iPhone上對一些靜態數據實施全文搜索的最佳方式的建議。在iPhone上實現全文搜索?

基本上我有一個應用程序,其中包含一個網站的離線版本,約50MB的文本,我希望用戶能夠搜索條款。我想我應該建立一個(「word」,reference_to_file_containing_word)或其他的表格,將其放入Core Data或者sqlite中,索引「word」列,然後讓搜索工具搜索表格中的搜索條件並把這些術語的結果集合交叉。

這不會讓人們搜索短語,但它會很容易,可能不會太慢​​。

我想爲此使用現有的SDK功能。我應該使用Core Data還是sqlite?

有沒有人有任何其他的想法如何做到這一點?

回答

8

您想將文檔中的每個單詞放在數據庫的自己的行中?這將比文件本身佔用更多的空間。

我會建議只是通過文本搜索;正則表達式其實很快。否則,你可以很容易地實現Boyer-Moore

[編輯]如果你堅持創建一個單詞索引,你不能擊敗trie。這將比使用數據庫更快,並且最有可能佔用比文檔本身更少的空間(不像數據庫)

+0

謝謝!我想我會試着用正則表達式首先遍歷所有的文件,如果這太慢,我會嘗試其他的東西。在完成網絡相關的編程之後,我對嘗試有點熟悉,但沒有想過將它們應用於單詞而不是網絡前綴。 – Nimrod 2010-01-10 07:16:04

2

答案是SQLite的FTS3。谷歌它,有很多關於如何讓它在iPhone上工作的教程。

在iPhone上使用SQLite的簡單方法是使用FMDB。