давно пользуюсь данным сайтом. для подготовки к олимпиаде по программированию, в основном, и для поиска решений для возникающих задач. выручал ресурс не раз.
Благодарю, когда-то уже натыкался на этот проект, но потом успешно забыл про него. Сейчас сижу изучаю как оно работает. Похоже это то что мне нужно. Быстро и не изобретая велосипеда — взять готовый велосипед, разобраться как устроен, использовать по назначению. :)
Как бы классическое дерево по буквам. Ищем в дереве вхождения для первого слова, затем вхождения для второго затем для третьего и так далее. Затем смотрим что из результатов содержит все слова / большинство слов.
Проще говоря, допустим есть три записи:
1. ИНТЕРЕС
2. ТЕХНИЧЕСКИЙ ПРОГРЕСС
3. РЕСУРСЫ
соответственно у Вас индекс:
ИНТ = 1
НТЕ = 1
…
РЕС = 1,2,3
ЕСУ = 3
|РЕ = 3 < — РЕ, стоящее в начале слова
…
делается запрос допустим «РЕСУ», запрос к индексу дает:
|ре = 3
рес = 1,2,3
есу = 3
(3)&(1,2,3)&(3) = (3)
следовательно это слово (частично) есть только в третьей строке.
все просто — строите дерево словаря.
Словами могут быть как целые слова, так и искусственные — например тройки или десятки букв подряд — выбор базы зависит от содержания статей — если статьи близки к нормальному тексту, тогда лучше всего обычные слова.
В листах дерева — ссылки на статьи.
При поиске фразы мы сначала находим подходящие слова из словаря, обьединяя получаем список статей.
Как вариант — смотреть в сторону полнотекстовых индексов в базах данных. Там все тоже самое.
Коллекция описаний алгоритмов