Реализация полнотекстового поиска на iPhone?

Я ищу предложения по наилучшему способу реализации полнотекстового поиска некоторых статических данных на iPhone.

В основном у меня есть приложение, содержащее автономную версию веб-сайта, около 50 МБ текста, и я бы хотел, чтобы пользователи могли искать условия. Я полагаю, что мне нужно как-то построить таблицу ( "word", reference_to_file_contain_word) или что-то еще, поместить это в Core Data или просто sqlite, индексировать столбец "word", затем найти поиск таблицу для поисковых терминов и взять пересечение наборов результатов для терминов или чего-то еще.

Это не позволит людям искать фразы, но это будет довольно легко и, вероятно, не слишком медленно.

Я хотел бы просто использовать существующие функции SDK для этого. Должен ли я использовать Core Data или sqlite?

Есть ли у кого-нибудь другие идеи о том, как это можно сделать?

Ответ 1

Вы хотите разместить каждое слово в документе в своей строке в базе данных? Это займет еще больше места, чем сам документ.

Я бы порекомендовал просто поиск по тексту; regex на самом деле довольно быстро. В противном случае вы могли бы довольно легко реализовать Boyer-Moore.

[Edit] Если вы настаиваете на создании индекса слов, вы не можете победить trie. Это будет быстрее, чем использование базы данных и, скорее всего, займет меньше места, чем сами документы (в отличие от базы данных).

Ответ 2

Ответом является FTS3 для SQLite. Google это, есть много учебников о том, как заставить его работать на iPhone.

И простой способ использования SQLite на iPhone использует FMDB.