could we avoid alloc `indexWorker` for each `results`? IMHO `len(results)` could be very large~? it's in single goroutine, maybe we can just reuse one worker and just reset `w.partitionTable` and `w.batchSize`?