This is a great way to handle offline search, but as the article mentions, indexing is still a pretty heavy operation to perform on the client-side. I'm curious to see if it'd make sense to invert the index server-side, and pass the pre-inverted index along with the documents via REST when an app loads. Then, you could still perform offline queries, but the client would only be responsible tokenizing/analyzing the search terms, comparing them against the index and doing the BM25 scoring piece.