2008-09-21 6 views
30

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

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

+0

Это зависит от ваших любимых языков программирования. Java не подлежит сомнению. Вы код в asp.net, perl, python, php, ...что было бы важно знать, прежде чем любой адекватный ответ мог бы быть предложен :) – Anheledir

+0

эй! проверьте [мой] (http://code.google.com/p/goomez/) ... очень простой поисковик файлов на основе [lucene.net] (http://incubator.apache.org/lucene.net/) – sebagomez

+0

Вы пробовали nutch.net порт из гайки java .... – chugh97

ответ

48

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

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

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

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

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

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

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

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

+1

Удивительный ответ. Благодаря! – Aseem

+0

Вот моя реализация механизма ранжирования (elasticsearch) и переднего конца (angularjs) https://machinelearningblogs.com/2016/12/12/how-to-build-a-search-engine-part-1/ –

5

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

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

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

+0

Они делают - они выпускают научные статьи о лучших способах кеширования результатов на регулярной основе. Вы просто кешируете самые последние ответы? Вы просматриваете журналы запросов и пытаетесь предсказать, что вам нужно для кэширования и прекомпьюте? Увлекательный материал. – SquareCog

6

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

4

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

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

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

0

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

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

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

Недостатки:

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

Не назвал бы это API ... – Sean

+0

Почему бы и нет? Не каждый API представляет собой набор вызываемых функций. Вы можете разместить XML-описание своей поисковой системы на своем собственном веб-сайте, а затем вы даже не используете веб-интерфейс Google для этого. –

6

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

1

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

1

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

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

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