У меня есть список примерно из миллиарда уникальных строк, длина большинства из которых составляет несколько десятков символов. Я хотел бы найти все строки, которые содержат или соответствуют строке поиска, в идеале менее чем за 100-200 мс и на как можно меньшем количестве оборудования (я предполагаю, что мне понадобится хороший объем оперативной памяти). Каков наилучший способ хранения и извлечения этого?
- Из того, что я прочитал, MySQL
LIKE '%search%'
не использует индекс, ноLIKE '%search'
ИLIKE 'search%'
оба используют. Это приемлемо в крайнем случае, но не идеально, так как я хотел бы найти строку поиска где-нибудь в пределах целевых строк. - Использование хранилища ключей и значений, такого как Redis, потребует хранения всех возможных комбинаций подстрок и, как я предполагаю, большого количества оперативной памяти.
- Список строк составляет примерно дюжину ГБ. Является ли сервер полнотекстового поиска, такой как Lucene, жизнеспособным или даже идеальным для этого вместо миллиардов строк/документов/записей? Это наверняка сэкономит на разборе.