Подтвердить что ты не робот

Создание поисковой системы

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

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

4b9b3361

Ответ 1

В поисковой системе есть несколько частей. В общем, в безнадежно общей манере (люди, не стесняйтесь редактировать, если вы чувствуете, что можете добавлять более подробные описания, ссылки и т.д.):

  • Сканер. Это та часть, которая проходит через Интернет, захватывает страницы и хранит информацию о них в каком-то центральном хранилище данных. В дополнение к самому тексту вам понадобятся такие вещи, как время, когда вы обращались к нему, и т.д. Искатель должен быть достаточно умным, чтобы знать, как часто попасть в определенные домены, подчиняться соглашению robots.txt и т.д.

  • Анализатор. Это считывает данные, полученные с помощью искателя, анализирует его, сохраняет все необходимые метаданные, удаляет нежелательные сообщения и, возможно, делает подсказку искателю о том, что нужно получить в следующий раз.

  • Индексатор. Читает материал, который анализирует парсер, и создает инвертированные индексы в термины, найденные на веб-страницах. Он может быть столь же умным, как вы хотите, - применять методы НЛП, чтобы делать индексы понятий, перекрестные ссылки, бросать синонимы и т.д.

  • Механизм ранжирования. Учитывая несколько тысяч URL-адресов, соответствующих "яблоку", как вы решаете, какой результат лучше? Jut индекс не дает вам эту информацию. Вам нужно проанализировать текст, структуру ссылок и любые другие части, на которые вы хотите посмотреть, и создать несколько баллов. Это может быть сделано полностью "на лету" (это действительно сложно) или на основе некоторых предварительно вычисленных понятий "экспертов" (см. PageRank и т.д.).

  • Внешний интерфейс. Кое-что должно получить пользовательские запросы, нажать на центральный движок и ответить; это что-то должно быть умным в отношении результатов кеширования, возможно, смешивания результатов других источников и т.д. У него есть свой набор проблем.

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

Некоторые ссылки, которые могут оказаться полезными: "Agile web-crawler" , документ из Эстонии (на английском языке) Поисковая система Sphinx, индексирование и поиск api. Предназначен для больших БД, но модульных и открытых. Информационный поиск, учебник об ИК от Manning и др. Хороший обзор того, как строятся индексы, возникают различные проблемы, а также некоторое обсуждение обхода и т.д. Бесплатная онлайн-версия (на данный момент)!

Ответ 2

Xapian - еще один вариант для вас. Я слышал, что он масштабируется лучше, чем некоторые реализации Lucene.

Ответ 3

Отъезд nutch, написанный тем же парнем, который создал Lucene (Doug Cutting).

Ответ 4

Мне кажется, что наибольшая часть - это индексация сайтов. Создание ботов для очистки Интернета и анализа их содержимого.

Мы с другом говорили о том, как под капотом должны быть удивительные Google и другие поисковые системы. Миллионы результатов за полсекунды? Псих. Я думаю, что у них могут быть заданные результаты поиска для обычно используемых элементов.

изменить: Этот сайт выглядит довольно интересным.

Ответ 5

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

[Я понимаю, что проект Wikia Search закончился. Однако я думаю, что вовлечение в существующий проект с открытым исходным кодом - хороший способ облегчить выполнение такого размера.]

http://re.search.wikia.com/about/get_involved.html

Ответ 6

Если вам интересно узнать о теории поиска информации и некоторых технических деталях, лежащих в основе внедрения поисковых систем, я могу порекомендовать книгу Управление гигабайтами Ян Виттен, Алистер Моффат и Тим К. Белл. (Раскрытие информации: Алистер Моффат был моим руководителем в университете). Хотя это немного датировано сейчас (первое издание вышло в 1994 году, а второе в 1999 году - что так тяжело для управления гигабайтами сейчас?), Лежащая в основе теория все еще звучит и она большое введение в индексирование и использование сжатия в системах индексирования и поиска.

Ответ 7

Меня тоже интересует поисковая система. Я рекомендовал Apache Hadoop MapReduce и Apache Lucene. Быстрый переход от Hadoop Cluster - лучший способ.

Ответ 8

Есть порты Lucene. У Зенда есть один свободный доступ. Взгляните на этот быстрый учебник: http://devzone.zend.com/node/view/id/91

Ответ 9

Здесь немного другой подход, если вы не так сильно интересуетесь его программированием, но больше заинтересованы в результатах: подумайте о его создании с помощью Google Custom API поисковой системы.

Преимущества:

  • Google делает все тяжелое дело для вас.
  • Знакомый пользовательский интерфейс и поведение для ваших пользователей
  • Может быть что-то работает и работает в считанные минуты
  • Множество возможностей настройки

Недостатки:

  • Вы не пишете код, поэтому возможности обучения там
  • Все, что вы хотите найти, должно быть общедоступным и в индексе Google уже
  • Ваш результат привязан к Google