[WIP] Locality Sensitive Hashing for approximate nearest neighbor search(GSoC)

Yes, that can be used here. For small and medium array sizes of `sorted_array`, `bisect_left` and `bisect_right` are faster. But for very large arrays,  `numpy.searchsorted` is faster.
Eg:
array size  = 1000
average time for ` _find_matching_indices` with `bisect` = 3.88 µs
average time for ` _find_matching_indices` with `searchsorted` = 5.09 µs

array size  = 10000
average time for ` _find_matching_indices` with `bisect` = 7.69 µs
average time for ` _find_matching_indices` with `searchsorted` = 8.56 µs

array size  = 30000
average time for ` _find_matching_indices` with `bisect` = 17.2 µs
average time for ` _find_matching_indices` with `searchsorted` = 16.8  µs

So I think using bisect is more reasonable.