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

StackOverflow https://stackoverflow.com/questions/112248

  •  02-07-2019
  •  | 
  •  

Вопрос

Я всегда был заинтересован в разработке поисковой системы в Интернете.С чего бы лучше начать?Я слышал о Lucene, но я не большой специалист по Java.Есть какие-нибудь другие хорошие ресурсы или проекты с открытым исходным кодом?

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

Я тоже интересуюсь Поисковой системой.Я рекомендовал как Apache Hadoop MapReduce, так и Apache Lucene.Лучший способ ускорить работу с помощью кластера Hadoop - это.

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

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

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

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

Недостатки:

  • Вы не пишете код, поэтому у вас нет возможности учиться
  • Все, что вы хотите найти, должно быть общедоступным и уже внесено в индекс Google
  • Ваш результат привязан к Google
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top