Pull to refresh

Comments 20

давно пользуюсь данным сайтом. для подготовки к олимпиаде по программированию, в основном, и для поиска решений для возникающих задач. выручал ресурс не раз.
UFO just landed and posted this here
ага, зачем учить как вычислять интегралы, если у нас есть Mathcad, а особо крутые могут пользоваться Mathlab?

грустно
UFO just landed and posted this here
меня больше интересуют лингвистические алгоритмы, к сожалению, для них готовых решений нет, вот и приходится искать, изучать и реализовывать

для типовых задач правильнее, как вы указали, использовать типовые решения, но все же желательно понимать как они работают

PS: да, сегодня я зануда))
Благодарю, когда-то уже натыкался на этот проект, но потом успешно забыл про него. Сейчас сижу изучаю как оно работает. Похоже это то что мне нужно. Быстро и не изобретая велосипеда — взять готовый велосипед, разобраться как устроен, использовать по назначению. :)
UFO just landed and posted this here
Действительно, зачем городить огород, если можно воспользоваться sphinx или tsearch2
UFO just landed and posted this here
Строите суффиксальное дерево, в листах записывайте номера записей. Бегайте по словам запроса и andите результат.
Как бы классическое дерево по буквам. Ищем в дереве вхождения для первого слова, затем вхождения для второго затем для третьего и так далее. Затем смотрим что из результатов содержит все слова / большинство слов.
Постройте индекс триграмм или биграмм (в зависимости от минимальной длины поиска). Триграммы это трехбуквия. («ТРЕСТ» = «ТРЕ», «РЕС», «ЕСТ», + возможно "|ТР" — начало слова + «СТ|» конец слова), затем запрос разбиваете тоже на триграммы и делаете запрос по индексу, при том либо пересекакая результаты (set(a) & set(b) & set©), оставляя только те результаты, которые отвечают всем триграммам, либо суммируйте.

Проще говоря, допустим есть три записи:
1. ИНТЕРЕС
2. ТЕХНИЧЕСКИЙ ПРОГРЕСС
3. РЕСУРСЫ

соответственно у Вас индекс:
ИНТ = 1
НТЕ = 1

РЕС = 1,2,3
ЕСУ = 3
|РЕ = 3 < — РЕ, стоящее в начале слова


делается запрос допустим «РЕСУ», запрос к индексу дает:
|ре = 3
рес = 1,2,3
есу = 3
(3)&(1,2,3)&(3) = (3)
следовательно это слово (частично) есть только в третьей строке.
Посмотрите в сторону Lucene (есть для большинства платформ)
Дизайн у сайта вырвиглазный. Из подобных ресурсов мне больше нравиться e-maxx.ru
все просто — строите дерево словаря.
Словами могут быть как целые слова, так и искусственные — например тройки или десятки букв подряд — выбор базы зависит от содержания статей — если статьи близки к нормальному тексту, тогда лучше всего обычные слова.

В листах дерева — ссылки на статьи.

При поиске фразы мы сначала находим подходящие слова из словаря, обьединяя получаем список статей.

Как вариант — смотреть в сторону полнотекстовых индексов в базах данных. Там все тоже самое.
Спасибо большое за ссылку, как раз сейчас задачи решаю про строки :)
UFO just landed and posted this here
UFO just landed and posted this here
спасибо за ссылку, визуализаторы рулят
Sign up to leave a comment.

Articles