Right now the cursor gets reset on every search update, and we parse everything over again.
My solution would be similar to page state, storing a list of known matching entries for each query, and the cursor position since we may have to parse extra entries to get a full page of results. Will require some changes to fakeio.