Well, you cannot compress text very well or store it as a binary file that needs to be translated, otherwise you will refuse SQLite query speed (because all records with text storage are binary-encoded) must be read into the memory translated / unpacked, then search). Otherwise, you will have to mirror (and maintain) the textual representation in your master data warehouse along with more fully functional material.
How about a hybrid solution? Core Data stores everything except the actual text; The text itself is archived in a file system with one file per write-in-Core-Data. Each file has a name for its unique identifier in the master data store. Thus, a search could do two things (in the background, of course): search the master data store for things like names, dates, etc .; search for files (possibly even using Spotlight) to search for content. If the search for the file matches, its file name is used to search for the corresponding entry in Core Data for display in the user interface of the application.
This allows you to use internal search criteria for a specific application and Spotlight software asynchronous search. This is a bit more work provided, but if you are talking about a large text, I cannot think of a better way.
source share