200 000
В теории, это достаточно небольшая энтропия: 200,000 × 100. Т.е в худшем случае вам нужно хранить ~200 млн подстрок. В реальности мы скорее говорим о медианном значении длинны слова умноженном на медианное значении числа слов. Так как поиск все еще по словам, то можно сделать двухуровневые индексы: первый уровень это уникальные слова и их подстроки, плюс подстроки словоформ. Второй уровень это ссылки на слова. В этом случае поиск будет состоять из двух шагов: * найти оригинальную подстроку среди всего множества уникальных строк. Тут есть простор для оптимизации, например еще один «уровень» который отрезает слова без нужных букв. * по идентификатору слов найти документы
Ох, сложно, надо чуть-чуть осознать
Да, эта проблема сама по себе сложная и ресурсоёмкая. Для быстрого поиска нужны инструменты которые или более-менее дешево умеют строить индексы по всем символам в строке или которые умеют быстро искать по набору ключевых слов (по сути в «ширину», имея очень много сегментов строк и очень много железа, чтоб по сегменту строк можно было дешево делать параллельный поиск)
Обсуждают сегодня