* Add `collection_search_args`.
* Remove `collection_name` argument. Use `Index::get_collection_name()` instead.
* Add `collection_search_args_t`, `Union_KV` and `Union_Topster`.
* Allow multiple sub-searches to the same collection in union.
* Fix union tests.
* Union pagination.
* Union sorting.
* Update test.
* Totals documents count of a particular collection should only be added once in `out_of`.
* Update error message.
* Make `Topster` generic.
* Refactor template declaration.
* Fix `CollectionFacetingTest, FacetCountsBool`.
* Rename parameter.
* Rename return parameters.
* Add `search_time_ms` and `page` return parameters.
* do grouping in two pass
* add hyperloglog count, use distinct_key in kv_map
* counter for groups found in current pass, update the tests
* increase hyperloglog threshold, refactor topster test
This obviously has a performance impact, but it might not be a big deal for most people and is now left to their discretion. The default of 500 results stays to maintain backward compatibility.
- Refactor token position population
- Store only the query index in topster instead of storing the full offsets.
- Calculate the offsets finally on the results that are to be returned.