Отечественный поисковый движок

dlyanachalas
На сайте с 15.09.2006
Offline
693
#11
Bazist:
Что сделано на сегодня, проиндексировано
dou.ua (0.5гб html текста)
Habrahabr.ru (15гб html текста),
Sql.ru (56гб html текста),
Lib.rus.ec (250гб текста),

Всего контента: 320гб
Результирующий индекс: ~4 гб

Любопытно, как вы добились такого результата? Обычно, инвертированный индекс можно сжать на проценты или в несколько раз. Но чтобы в 100 раз - это необычно и весьма интересно!

Bazist:
Из фич для просто инвертированого индекса, пришла например такая идея.
Поиск по словарям. Пользователь задает словарь, вес каждого слова в словаре и отискивает все документы, где встречается наибольшее количество слов из словаря. В идеале такой поиск должен отискивать на запросы "ругают ФК Спартак" все страницы где болельщики ругают Спартак (ругают в запросе это не точное вхождение, а словарь слов).
Такое гдето уже реализовано ? Стоит ли за это браться ?

Немного похоже на http://news.yandex.ru/advanced.html

Делать - так уж по крупному. Если все ваши расчеты верны, то можно и Яндекс попячить ☝

---------- Добавлено 18.01.2014 в 22:52 ----------

Froolex:
ТС веб бетки еще нет? Я бы посоветовал посмотреть в сторону Я.Островов и реализовать что-то подобное в узкой нише. Например те же энциклопедии, проиндексировать википедию и оттачивать на ней релевантность ответов. Постепенно можно государственные сайты индексировать их сейчас достаточно много. Или социальные сети, тот же контакт там можно поиграться с ранжированием по лайкам/репостам. На самом деле много чего можно сделать, главное делать а не слушать флудеров на форумах;-)

Не очень разумный совет, на мой взгляд. Эти данные и так есть, а Яндекс.Острова, сам Яндекс стесняется выкатывать, ибо бред. Да и чтобы они работали, сайты должны эти острова создавать, а пока их создало только полтора говносайта в сети.

B
На сайте с 15.01.2014
Offline
43
#12
dlyanachalas:
Любопытно, как вы добились такого результата? Обычно, инвертированный индекс можно сжать на проценты или в несколько раз. Но чтобы в 100 раз - это необычно и весьма интересно!

Такое сжатие, потому что индекс не хранит позиции слов, только названия документов. Для html документов, выбрасываются все теги. Само по себе выбрасывание тегов уже дает сжатие в 50-70%.

Вообще сжатие индекса очень полезная штука. Позволяет разместить как можно большие обьемы данных в ОЗУ, увеличить скорость поиска, упростить алгоритмы и свести к минимуму работу с диском.

www.booben.com (www.booben.com) - ассоциативный поисковый движок Блог (blog.pikosec.com) - как создавался поисковый движок с нуля Альбом (http://booben.com/Query?q2=CustomPhrase%2Bssearch%20%40today%20%40img%2B1&s=online&a=search&p=1) картинок searchengines.guru за сегодня
dlyanachalas
На сайте с 15.09.2006
Offline
693
#13
Bazist:

Вообще сжатие индекса очень полезная штука. Позволяет разместить как можно большие обьемы данных в ОЗУ, увеличить скорость поиска, упростить алгоритмы и свести к минимуму работу с диском.

Я тоже читал теорию :) Но там совсем другие проценты сжатия. У вас - просто фантастика)

eis
На сайте с 18.10.2008
Offline
473
eis
#14

Неплохая идея, увидеть уже можно?☝

- Здесь я покупаю вечные ссылки на свои сайты! (https://backlinkator.com) - сотни ссылок за копейки
Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#15

У Бабушкина сжатие круче.

Пруф

B
На сайте с 15.01.2014
Offline
43
#16
dlyanachalas:
Я тоже читал теорию :) Но там совсем другие проценты сжатия. У вас - просто фантастика)

Ну чтобы понять что не фантастика, достаточно посмотреть какой-нибудь вырожденный случай из теории мат статистики. Допустим у вас есть ограниченный словарь, пусть будет на 100 тысяч слов и оооочень большой документ, допустим на 100 мегабайт. Документ состоит только из слов в словаре. У вас задача, построить индекс, по которому нужно будет просто определить есть какое либо слово в этом документе или нет. И очевидно, что каким бы не был размер самого документа, 100 мб, 1000мб или больше, размер индекса будет всеголишь 100 тыс * 8 букв среднее слово + неболшие издержки на формат. Тоесть чисто теоретически, индекс может занимать и 0.01% от первоначального обьема текста.

На данный момент в моем индексе свыше 14 млн слов и словоформ и он действительно занимает меньше 1% от первоначального размера проиндексированого контента. Но даже при этом, потенциал сжатия еще большой, обычный RAR его свободно дожимает еще в два раза. Где предел сжатия, я даже затрудняюсь сказать. Это интересная теоретическая задача.

dlyanachalas
На сайте с 15.09.2006
Offline
693
#17

320 гб, допустим, 10 миллионов страниц.

Тогда инвертированный индекс будет равен примерно: 10 млн * 3 (размер индекса по документам) * 4 (размер индекса по словам) * 1000 (среднее количество слов в документе) = 120Гб.

У вас - 4Гб. Какие методики для этого используются?

(Сжатие всё-таки считается не от объема текста, а от объема несжатого индекса. Но у вас всё-равно, очень большой % сжатия).

B
На сайте с 15.01.2014
Offline
43
#18

Не совсем понял Вашу формулу.

Инвертированый индекс это по сути хештаблица. Ключом выступает слово, велью выступает связной список из набора страниц где это слово встречается.

Что в Вашей формуле 3 и 4 ?

dlyanachalas
На сайте с 15.09.2006
Offline
693
#19
Bazist:

Что в Вашей формуле 3 и 4 ?

3 байта и 4 байта :) Индексы же должны как-то храниться. В виде чисел, как я предполагаю?)

Ключом выступает слово, велью выступает связной список из набора страниц где это слово встречается.

Ок, я считал в другой плоскости, теперь понятно, как у вас. Теоретически, получается 14 млн слов * 10 млн страниц * 4 (байт) = 560 Тб несжатого индекса :)

Конечно, так в лоб, он очень сильно разреженный получится, однако, сжать в 100000 раз всё-таки врядли получится.

B
На сайте с 15.01.2014
Offline
43
#20
dlyanachalas:

Ок, я считал в другой плоскости, теперь понятно, как у вас. Теоретически, получается 14 млн слов * 10 млн страниц * 4 (байт) = 560 Тб несжатого индекса :)

Конечно, так в лоб, он очень сильно разреженный получится, однако, сжать в 100000 раз всё-таки врядли получится.

Инвертированый индекс потому и называется инвертированым, потому что он перевернут.

Это сделано для того, чтобы поиск какого либо слова сводился к одному запросу по хештаблице.

Опять таки, у Вас формула какаято странная, да и простыми методами Вы просто так не вычислите потенциал сжатия. Это зависит от многих факторов.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий