Ассоциативный поиск: Тестируем поиск по фразе

123
B
На сайте с 15.01.2014
Offline
43
#11
Scaryer:
"ваз в кредит" лучше искать на серче или на хабре?

На серче есть:

http://booben.com/?q=%D0%B2%D0%B0%D0%B7%20%D0%BA%D1%80%D0%B5%D0%B4%D0%B8%D1%82&s=searchengines.guru

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 за сегодня
ХЧ
На сайте с 27.06.2014
Offline
26
#12
Bazist:
Используется Trie и NoSql база данных собственной разработки.
Она значительно быстрее работает чем существующие решения.
Например стандартный std::map из С++ построенный на красно черных деревьях превосходит в среднем по скорости в 5 раз. Достаточно легко оперирует таблицами в которых десятки и даже сотни миллионов ключей ( что важно для поисковиков )
Подробней еще здесь: http://blog.pikosec.com/?p=55



Индекс делится на две части. На тот что лежит на диске и тот что в ОЗУ. Новые страницы попадают в ОЗУ. Когда лимит выделенный на ОЗУ превышен, часть индекса из ОЗУ мержится с дисковым индексом и ОЗУ очищается.



Благодаря хорошей степени сжатия, индекс часто удается весь вытянуть в ОЗУ. Например расчет такой. На 56 ГБ проиндексированого контента индекс в районе 500-600 мб. На рабочей машинке сейчас 8 ГБ ОЗУ. Следовательно в ОЗУ можно разместить индекс сразу на несколько крупных ресурсов, вроде серчэнжин. Когда данные в ОЗУ, вопрос с фрагментацией уже не актуален.

Я имел ввиду, например, у Вас есть индекс и Вы его храните в базе данных, которую Вы разработали (NoSQL).

Пусть даже уже что-то в ОЗУ подгрузилось или хранится на диске - не важно.

1) Индекс у Вас расположен в отсортированном в линейном массиве или B+ дереве?

Т.е. вот сделали запрос однословник - Вася. Код посчитал хэш и пошел гулять далее по линейному отсортированному массиву искать или обходим B+ деревья. Т.е. Какая реализация ?

***

Например, Вы еще проиндексировали 1 000 000 сайтов и добавили информацию в индекс. Если индекс строили с нуля, то один вопрос, если вставляли в текущий индекс, то вопрос:

2) Как боритесь с фрагментацией?

Потому что при вставке начинается все равно внутренняя фрагментация данных.

B
На сайте с 15.01.2014
Offline
43
#13
ХорошийЧеловек:
Я имел ввиду, например, у Вас есть индекс и Вы его храните в базе данных, которую Вы разработали (NoSQL).
Пусть даже уже что-то в ОЗУ подгрузилось или хранится на диске - не важно.

1) Индекс у Вас расположен в отсортированном в линейном массиве или B+ дереве?
Т.е. вот сделали запрос однословник - Вася. Код посчитал хэш и пошел гулять далее по линейному отсортированному массиву искать или обходим B+ деревья. Т.е. Какая реализация ?

На диске это линейный массив блоков. В ОЗУ это дерево.

ХорошийЧеловек:


***

Например, Вы еще проиндексировали 1 000 000 сайтов и добавили информацию в индекс. Если индекс строили с нуля, то один вопрос, если вставляли в текущий индекс, то вопрос:

2) Как боритесь с фрагментацией?

Потому что при вставке начинается все равно внутренняя фрагментация данных.

Если в существующий индекс добавить 1 000 000 сайтов, то:

1. Все данные будут вставлены в ОЗУ, максимально быстро.

2. Два индекса, существующий на диске и тот который новый в ОЗУ будут смержены. Мерж индексов по сути означает что они будут дефрагментированы и перезаписаны на диске в один монолитный индекс.

ХЧ
На сайте с 27.06.2014
Offline
26
#14
Bazist:
На диске это линейный массив блоков. В ОЗУ это дерево.



Если в существующий индекс добавить 1 000 000 сайтов, то:
1. Все данные будут вставлены в ОЗУ, максимально быстро.
2. Два индекса, существующий на диске и тот который новый в ОЗУ будут смержены. Мерж индексов по сути означает что они будут дефрагментированы и перезаписаны на диске в один монолитный индекс.

В линейном массиве блоков данные хранятся в виде B+ дерева или линейного отсортированного массива? :)

У Вас ОЗУ используется как кэш или полностью дублирует индекс с харда?

Я к чему спрашиваю... Чтобы найти ноду с нужным значем на харде и вставить ее в дерево, нужно бежать по линейному массиву на харде искать ноду или обходить дерево и далее найденную ноду вставлять в дерево в ОЗУ.

У Вас диплом, исследовательская работа или диссер?

B
На сайте с 15.01.2014
Offline
43
#15
ХорошийЧеловек:
В линейном массиве блоков данные хранятся в виде B+ дерева или линейного отсортированного массива? :)

У Вас ОЗУ используется как кэш или полностью дублирует индекс с харда?

Полностью дублирует. Даже можно указать режим, будем бегать по диску или попробуем все загрузить в ОЗУ.

ХорошийЧеловек:

Я к чему спрашиваю... Чтобы найти ноду с нужным значем на харде и вставить ее в дерево, нужно бежать по линейному массиву на харде искать ноду или обходить дерево и далее найденную ноду вставлять в дерево в ОЗУ.

Интересно как Вы себе это представляете ? Поток данных при индексировании контента, примерно 1 млрд вставок/поисков за час. Головка винчестера будет бегать что сумашедшая.

Диск через пару месяцев покупать новый не жалко ? :)

В моей схеме нету такого понятия как вставка чегото на диске. Есть операция мерж. А мержу впринципе всеравно, он склеивает две части индекса в один. Даже неважно где лежит часть индекса. Можно смержить два независимых индекса на диске в один.

ХорошийЧеловек:

У Вас диплом, исследовательская работа или диссер?

Диплом уже давно отгудел на задачах в разы попроще.

ХЧ
На сайте с 27.06.2014
Offline
26
#16
Bazist:
Полностью дублирует. Даже можно указать режим, будем бегать по диску или попробуем все загрузить в ОЗУ.



Интересно как Вы себе это представляете ? Поток данных при индексировании контента, примерно 1 млрд вставок/поисков за час. Головка винчестера будет бегать что сумашедшая.
Диск через пару месяцев покупать новый не жалко ? :)

В моей схеме нету такого понятия как вставка чегото на диске. Есть операция мерж. А мержу впринципе всеравно, он склеивает две части индекса в один. Даже неважно где лежит часть индекса. Можно смержить два независимых индекса на диске в один.



Диплом уже давно отгудел на задачах в разы попроще.

Вам тогда лучше всего где-нибудь описать архитектуру системы, потому что, как я ощущаю, мы с Вами общаемся про разные вещи. Получается как сравнение мягкого с мокрым :)

B
На сайте с 15.01.2014
Offline
43
#17
ХорошийЧеловек:
Вам тогда лучше всего где-нибудь описать архитектуру системы, потому что, как я ощущаю, мы с Вами общаемся про разные вещи. Получается как сравнение мягкого с мокрым :)

Если будет когдато время, может быть, опишу архитектуру подробней.

Но на данном этапе у меня не образовательное направление проекта и на это просто нет времени.

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

Интересно, как можно обьяснить сей реверанс Яши ?

Ключевое слово Соцсетевич, на форуме есть

http://booben.com/?q=%D1%81%D0%BE%D1%86%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%B8%D1%87&s=sql.ru

но Яндекс не находит

https://yandex.ua/search/?text=site%3Asql.ru%20%D1%81%D0%BE%D1%86%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%B8%D1%87&lr=143

ХЧ
На сайте с 27.06.2014
Offline
26
#19
Bazist:
Полностью дублирует. Даже можно указать режим, будем бегать по диску или попробуем все загрузить в ОЗУ.



Интересно как Вы себе это представляете ? Поток данных при индексировании контента, примерно 1 млрд вставок/поисков за час. Головка винчестера будет бегать что сумашедшая.
Диск через пару месяцев покупать новый не жалко ? :)

В моей схеме нету такого понятия как вставка чегото на диске. Есть операция мерж. А мержу впринципе всеравно, он склеивает две части индекса в один. Даже неважно где лежит часть индекса. Можно смержить два независимых индекса на диске в один.



Диплом уже давно отгудел на задачах в разы попроще.
Bazist:
Если будет когдато время, может быть, опишу архитектуру подробней.
Но на данном этапе у меня не образовательное направление проекта и на это просто нет времени.

Дело не в этом. Люди смотрят либо в исходники либо в мануал.

Просьба уточнить - какая Ваша конечная цель для проекта?

B
На сайте с 15.01.2014
Offline
43
#20
ХорошийЧеловек:

Просьба уточнить - какая Ваша конечная цель для проекта?

Поисковый движок следующего поколения.

123

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