Насколько я знаю, нет способа сделать лучше, чем O (n) для обобщенного поиска глобуса.
Однако для особых случаев поиска префиксов и суффиксов вы можете самостоятельно отсортировать индексы для выполнения двоичного поиска, что приведет к O (log n) для поиска префиксов и суффиксов. Индекс префикса будет отсортирован на основе первого символа, затем второго и так далее. Индекс суффикса будет отсортирован по последнему символу, затем второму последнему и т. Д. (Обратные строки).
Я бы поступил так, как вы предлагаете в своем посте, и выполнил поиск в два этапа: поиск по индексам префикса или суффикса, а затем поиск методом грубой силы по сокращенному списку, предоставленному на первом этапе, с использованием регулярного выражения, созданного из глоба.
Поскольку сравнения длины строк выполняются быстрее, чем регулярные выражения, я бы также предварительно отфильтровал минимальную совпадающую длину строки или строку сопоставления фиксированной длины для примера ???. Doc.
Исходя из звучания вашего исходного поста, индексы должны будут ссылаться и на полный путь каждой записи, чтобы вы могли отобразить его после того, как будут найдены окончательные результаты.