Comments 20
давно пользуюсь данным сайтом. для подготовки к олимпиаде по программированию, в основном, и для поиска решений для возникающих задач. выручал ресурс не раз.
0
UFO just landed and posted this here
ага, зачем учить как вычислять интегралы, если у нас есть Mathcad, а особо крутые могут пользоваться Mathlab?
грустно
грустно
-1
UFO just landed and posted this here
Благодарю, когда-то уже натыкался на этот проект, но потом успешно забыл про него. Сейчас сижу изучаю как оно работает. Похоже это то что мне нужно. Быстро и не изобретая велосипеда — взять готовый велосипед, разобраться как устроен, использовать по назначению. :)
0
Действительно, зачем городить огород, если можно воспользоваться sphinx или tsearch2
0
UFO just landed and posted this here
Строите суффиксальное дерево, в листах записывайте номера записей. Бегайте по словам запроса и andите результат.
+2
Как бы классическое дерево по буквам. Ищем в дереве вхождения для первого слова, затем вхождения для второго затем для третьего и так далее. Затем смотрим что из результатов содержит все слова / большинство слов.
0
Постройте индекс триграмм или биграмм (в зависимости от минимальной длины поиска). Триграммы это трехбуквия. («ТРЕСТ» = «ТРЕ», «РЕС», «ЕСТ», + возможно "|ТР" — начало слова + «СТ|» конец слова), затем запрос разбиваете тоже на триграммы и делаете запрос по индексу, при том либо пересекакая результаты (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)
следовательно это слово (частично) есть только в третьей строке.
Проще говоря, допустим есть три записи:
1. ИНТЕРЕС
2. ТЕХНИЧЕСКИЙ ПРОГРЕСС
3. РЕСУРСЫ
соответственно у Вас индекс:
ИНТ = 1
НТЕ = 1
…
РЕС = 1,2,3
ЕСУ = 3
|РЕ = 3 < — РЕ, стоящее в начале слова
…
делается запрос допустим «РЕСУ», запрос к индексу дает:
|ре = 3
рес = 1,2,3
есу = 3
(3)&(1,2,3)&(3) = (3)
следовательно это слово (частично) есть только в третьей строке.
0
Посмотрите в сторону Lucene (есть для большинства платформ)
0
Дизайн у сайта вырвиглазный. Из подобных ресурсов мне больше нравиться e-maxx.ru
+1
все просто — строите дерево словаря.
Словами могут быть как целые слова, так и искусственные — например тройки или десятки букв подряд — выбор базы зависит от содержания статей — если статьи близки к нормальному тексту, тогда лучше всего обычные слова.
В листах дерева — ссылки на статьи.
При поиске фразы мы сначала находим подходящие слова из словаря, обьединяя получаем список статей.
Как вариант — смотреть в сторону полнотекстовых индексов в базах данных. Там все тоже самое.
Словами могут быть как целые слова, так и искусственные — например тройки или десятки букв подряд — выбор базы зависит от содержания статей — если статьи близки к нормальному тексту, тогда лучше всего обычные слова.
В листах дерева — ссылки на статьи.
При поиске фразы мы сначала находим подходящие слова из словаря, обьединяя получаем список статей.
Как вариант — смотреть в сторону полнотекстовых индексов в базах данных. Там все тоже самое.
0
Спасибо большое за ссылку, как раз сейчас задачи решаю про строки :)
0
UFO just landed and posted this here
UFO just landed and posted this here
так вот ты какой, капитан
-1
Sign up to leave a comment.
Коллекция описаний алгоритмов