Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implementing full text search on iPhone?

I'm looking for suggestions on the best way to implement a full-text search on some static data on the iPhone.

Basically I have an app that contains the offline version of a web site, about 50MB of text, and I'd like for users to be able to search for terms. I figure that I should somehow build an table of ("word", reference_to_file_containing_word) or something, put that into either Core Data or just sqlite, index the "word" column, then have the search facility search the table for search terms and take the intersection of the sets of results for the terms or something.

That wouldn't allow people to search for phrases but it would be pretty easy and probably not too slow.

I'd like to just use existing SDK features for this. Should I use Core Data or sqlite?

Does anyone have any other ideas on how this could be done?

like image 790
Nimrod Avatar asked Jan 10 '10 04:01

Nimrod


1 Answers

You want to place every word in the document in its own row in a database? That's going to take up even more space than the document itself.

I would recommend just searching through the text; regex is actually pretty fast. Otherwise, you could implement Boyer-Moore fairly easily.

[Edit] If you insist on creating an index of words, you can't beat a trie. It would be faster than using a database, and most likely take up less space than the documents themselves (unlike the database)

like image 87
BlueRaja - Danny Pflughoeft Avatar answered Nov 02 '22 22:11

BlueRaja - Danny Pflughoeft