Open source поисковые технологии

12 3
АХ
На сайте с 01.12.2010
Offline
53
9584

Так получилось, что в разделе про Яндекс (/ru/forum/847329) участники форума заинтересовались вопросом, а как же поиск работает изнутри?

Предлагаю продолжить здесь, т.к. этот раздел больше соответствует теме дискуссии.

Я очень заинтересован в поиске единомышленников по развитию open source поисковых технологий применительно к ранжированию web (не глобального, но относительно большого объема).

Буду очень рад познакомиться с единомышленниками хорошо знающими Java.

И откровенно буду счастлив познакомиться с единомышленниками, способными без напряжения переписать Java-код на С (мечта всей жизни).

---------- Добавлено 26.04.2014 в 01:13 ----------

Пока читал форум, вернулся в тему и удивился кол-ву просмотров и отсутствию ответов. Просто напишу для затравки.

Как устроен поиск.

1. Crawler

Сам паук, собирающий информацию + база ссылочных апдейтов (в том числе и база ссылок по которым ходить дальше). База должна учитывать как часто нужно обходить документы повторно, насколько агрессивно можно парсить тот или иной сайт и где (robots.txt).

Паук должен понимать как часто нужно (можно) "вливать" данные в поисковик. Ну и, конечно же, уметь стрипить html (или другое, если не web) из документов.

2. Search

Поиск должен уметь апдейтить индекс (уже писал, что есть разные методы).

Должен уметь ранжировать документы. При этом есть разные ранкеры (tf/idf, BM25(A)) etc.)

А еще все к нему пытаются прикрутить разное:

-Фильтры.

-Морфологию.

-Семантику.

-И дальше, по-вкусу...

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

Кац (именно так) уже отказался, Садовский пробует (маркетинг?). Поживем - увидим, но к поиску это отношения не имеет. Это маркетинг чистой воды.

---------- Добавлено 26.04.2014 в 01:33 ----------

Как все реализуется на практике (особенно при поиске по web)?

Web, как факт, в наше время очень большой, т.е. - big data.

Для обработки таких объемов данных производительности i-того сервера явно недостаточно. Нужна кластеризация, т.е. параллельные вычисления. Поэтому была разработана технология MapReduse. В той или иной реализации ее используют все поисковые системы.

Если искать аналог в open souce, то это будет Hadoop.

Для хранения базы скаченных web-документов Google использует BigTable (аналог в open source - Hbase, кстати, ее использует в своем поиске mail.ru), Яндекс использует свое проприетарное решение.

Если интересно, могу продолжить. Задавайте вопросы.

Я просто люблю и уважаю людей.
wwwwww
На сайте с 29.04.2011
Offline
195
#1

Интересно. Продолжайте.

Видишь? Свободная подпись.
komdir
На сайте с 14.10.2009
Offline
430
#2
wwwwww:
Интересно. Продолжайте.

да, научите нас, просто внимаем)

ида, еще есть цель и желание поднять кучу, нет очень большую кучу бабла, насрав на всякое там ранжирование.

а так да, слушаем и внимаем)

Альтена-Хост:


Если интересно, могу продолжить. Задавайте вопросы.

не интересно, но все же: к чему этот говновброс не имеющий никакого камильфо информации всвязи с вышеуказанными технологиями?

M
На сайте с 27.01.2013
Offline
68
#3

По этой теме мне хороший человек konfuji скинул ссылку - Статья от mail в общих чертах проясняет принципиальные архитектуры ПС и отличия между ними.

Альтена-Хост, Вы можете пояснить про физическую структуру BigTable пояснить. Это же не в прямом смысле таблица?

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

Нельзя написать нормальный поисковик на Java.

АХ
На сайте с 01.12.2010
Offline
53
#5
dlyanachalas:
Нельзя написать нормальный поисковик на Java.

На 300% согласен, потому как сразу огребаются все "прелести " VM и ее GC.

Поэтому и мечтаю найти людей с одновременным знанием Java и C.

Что бы нормально писать что-то реально быстродействующее по *NIX нужен C (в идеале - asm).

---------- Добавлено 28.04.2014 в 11:07 ----------

komdir:
ида, еще есть цель и желание поднять кучу, нет очень большую кучу бабла, насрав на всякое там ранжирование

Мне стыдно за Вашу учительницу русского языка.

dlyanachalas
На сайте с 15.09.2006
Offline
693
#6
Альтена-Хост:
На 300% согласен, потому как сразу огребаются все "прелести " VM и ее GC.
Поэтому и мечтаю найти людей с одновременным знанием Java и C.
Что бы нормально писать что-то реально быстродействующее по *NIX нужен C (в идеале - asm).

Нет, asm - не подходит. Тут 80% успеха - хорошо организованная структура данных и алгоритм. А assembler не позволит это сделать.

Не надо сразу так круто делать, как mail.ru и Яндекс. Нужно сделать несколько допущений и упрощений. Чтобы уместить весь рунет в 2-5 серверов. А вот уже потом развиваться.

АХ
На сайте с 01.12.2010
Offline
53
#7
dlyanachalas:
Чтобы уместить весь рунет в 2-5 серверов. А вот уже потом развиваться

Это относительно легко делается на любой платформе, если не ходить дальше УВ2. Самое смешное, что качество выдачи получается вполне достойное для большинства не микро НЧ запросов. Так в свое время начинали ask и yahoo.

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

---------- Добавлено 28.04.2014 в 12:40 ----------

dlyanachalas:
А assembler не позволит это сделать.

Уверен, что про macro assembler знаете. Просто там подход не столько ООП (который не очень люблю), а ПОП (который не жалуют современные программисты). Хотя, выбор между asm и С под *NIX не повод для спора, а скорее религия (ядро того же linux на C написано).

MrBrik
На сайте с 15.11.2012
Offline
63
#8
Альтена-Хост:
Яндекс использует свое проприетарное решение.

Яндекс тоже уже использует Хадуп. С BigData оракловой.

Возможно еще не в продакшене.

Цел. Жив. Орел. До 12% скидка на сервер и VPS по этой ссылке. Тыкай! (https://goo.gl/Y0JC0e) | Типа естественные ссылки, тренд продвижения (http://zenlink.ru?p=407fbe3fb926df9fe4232be90e3d290f)
dlyanachalas
На сайте с 15.09.2006
Offline
693
#9
Альтена-Хост:

Уверен, что про macro assembler знаете. Просто там подход не столько ООП (который не очень люблю), а ПОП (который не жалуют современные программисты). Хотя, выбор между asm и С под *NIX не повод для спора, а скорее религия (ядро того же linux на C написано).

Выйграете пару %, а проиграете в структуре.

Как быстро искать - давно описано и продумано. Вот вы уже делали базы - как там искали? Создавали инвертированный индекс или нет?

По инвертированному индексу искать всегда быстро. Хоть на ассемблере, хоть на С.

---------- Добавлено 28.04.2014 в 13:16 ----------

MrBrik:
Яндекс тоже уже использует Хадуп. С BigData оракловой.
Возможно еще не в продакшене.

Вы что-то путаете. У Яндекса обычные бинарные файлы.

АХ
На сайте с 01.12.2010
Offline
53
#10

Ну, в общем-то, согласен. Выигрыша у asm не настолько много.

Без инвертированного индекса искать в полнотексте - идея бредовая.

Да, создавал, искал. Сейчас Вам в личку скину пример поисковика (ну, это так, забава осенняя).

Вообще говоря, делал некоторое количество поисковиков по крупным интранет (к примеру, наше региональное отделение Siemens). Задачка весьма нетривиальная, т.к. очень в этих ситуациях трудно прикрутить такой фактор, как ссылочное ранжирование.

---------- Добавлено 28.04.2014 в 13:31 ----------

MrBrik:
Яндекс тоже уже использует Хадуп. С BigData оракловой.

Ни разу об этом не слышал. Может быть Вы ошиблись и имеете ввиду поиск mail.ru? Они действительно использовали hadoop в реализации Cloudera.

12 3

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