Hi Andrew,
As you have observed, ScannerTypeahead avoids connections-store to save some space since efficiency is good enough for the scale of tens or hundreds of thousands of elements. The brute force scanning aided by bloom filter is only a few milliseconds. ScannerTypeahead lets you openRangeTyeahead for different ranges. We use it different groups of elements. For example, 1st Group has 5000 cities, 2nd Group has 10000 hotels, 3nd Group has 6700 restaurants. You can put these groups into a ScannerTypeahead and open the corresponding range for each group and do search.
BrowseTypeahead is similar to ScannerTypeahead but it scans non-continuous element ids. For example, you have 10000 hotels, you have a BrowseTypeahead for category-one hotels [1, 19, 207, 3089] and one for category-two hotels [2, 4, 5, 10, 101, 327, 8999, ....] and one for category-three and one for category-four and etc. If the category-one hotels are changed to [3, 19, 207, 3089, 4129, 10000], and you can call update(int[]) on the category-one BrowseTypeahead.
Hope this is helpful.
jingwei