2014-12-13 2 views
1

Я ищу для создания распределенной поисковой системы.Алгоритмы построения одноранговой поисковой системы с распределенной базой данных

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

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

Что мне действительно нужно, это указатель в сторону некоторых ресурсов и, желательно, примеры кода.

+0

Какой DHT?Bittorrent Mainline DHT aka [bep_0005] (http://www.bittorrent.org/beps/bep_0005.html)? Azureus имеет собственный DHT. Ни один из них не может «искать» ничем, кроме infohash. – harold

+0

Алгоритмы распределенного поиска - очень сложная текущая тема исследований, получение уникального идентификатора - это самый простой из них, просто используйте UUID - для остальной части вопроса сначала перейдите и прочитайте несколько статей по этой теме. – peter

+0

Спасибо, я надеялся, что кто-то сможет указать мне в сторону некоторых из этих исследовательских работ. –

ответ

3

Я не совсем понимаю, как каждый узел получает глобально уникальный идентификатор.

Я бы сказал, что это не имеет никакого отношения к названию вашего вопроса и конкретной реализации. Но, как правило, это делается произвольно или на основе хэша их общедоступного IP + некоторой случайной подчасти для модуляции некоторых настроек для подсети. Посмотрите, например, на bittorrent's secure node ID generation algorithm.

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

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

Вот неполный перечень нескольких проблем решить:

  • распределения неравномерного слова размещая больше нагрузки на некоторых части DHT ключевого пространства, чем другие, - это может быть смягчен до некоторой степени узлов перемещения себя, целевой адрес отказоустойчивость или расширение набора узлов, ответственных за целевой ключ. и просто отбрасывать чрезвычайно комбовые слова
  • Выполнение операций объединения или пересечения в нескольких поисковых терминах - это может быть сделано с помощью фильтров цветения в некоторой степени
  • отрезок скриптов, которые не имеют пробелов в поисковых терминах - проблема, которая также имеет для решения с помощью нераспределенных двигателей индексирования, таких как люцен. afaik использование N-граммов
  • предотвращение распространения популярного контента, содержащего конкретное слово, из всех других результатов, разделяющих это слово
  • доверия. т. е. предотвращение нападений с использованием спама для ключевых слов

Я не уверен, что DHT - это даже правильный подход. Я смутно вспоминаю другие показатели, основанные на языке/самих ключевых словах, где узлы перемещаются в пространстве ключей, чтобы тянуться к используемым словам и тем самым обеспечивать необходимую пропускную способность сети.

Я рекомендую удалять google ученого, ищущего изменения, связанные с поиском по ключевым словам, или альтернативные накладки для DHT.

+0

это очень полезно для меня. Я дам тебе тиканье. –

 Смежные вопросы

  • Нет связанных вопросов^_^