Мета-поисковая архитектура

Вопрос был не достаточно ясным, я думаю; здесь обновляется прямо к вопросу:

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

Я смотрю на создание поисковой системы типа "предприятие", где индексированные данные могут поступать от проприетарных (например, автономии или Google Бокса) или общедоступных поисковых систем (таких как Google Web или Yahoo Web).

Ответы

Ответ 1

Если вы посмотрите на Garlic (pdf), вы заметите, что его архитектура достаточно универсальна и может быть адаптирована к мета- поисковая система.

UPDATE:

Грубый архитектурный эскиз выглядит примерно так:

   +---------------------------+
   |                           |
   |    Meta-Search Engine     |         +---------------+
   |                           |         |               |
   |   +-------------------+   |---------| Configuration |
   |   | Query Processor   |   |         |               |
   |   |                   |   |         +---------------+
   |   +-------------------+   |
   +-------------+-------------+
                 |
      +----------+---------------+
   +--+----------+-------------+ |
   |             |             | |
   |     +-------+-------+     | |
   |     |    Wrapper    |     | |
   |     |               |     | |
   |     +-------+-------+     | |
   |             |             | |
   |             |             | |
   |     +-------+--------+    | |
   |     |                |    | |
   |     | Search Engine  |    | |
   |     |                |    +-+
   |     +----------------+    |
   +---------------------------+

Представленные части:

  • Meta-Search Engine - движок, организует все это.
  • Процессор запросов - часть движка, разрешает возможности, отправляет запросы и агрегирует результаты определенных поисковых систем (через обертки).
  • Wrapper - связывает мета-поисковый API с конкретными поисковыми системами. Каждая обертка работает с определенной поисковой системой. Предоставляет возможности расширенной поисковой системы в мета-поисковой системе, принимает и отвечает на запросы поиска.
  • Поисковая система - внешние поисковые системы для запроса, они подвергаются мета-поисковому движку через обертки.
  • Конфигурация - данные, которые настраивают мета-поисковый механизм, например, какие обертки для использования, где можно найти больше оберток и т.д. Также можно настроить обертки.

Ответ 2

Посмотрите Lucene.

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

Ответ 3

Не то, что вы ищете, но я все же предлагаю проверить Compass, это может дать вам некоторые идеи. И возможно также Hibernate Search.

Обновление:. Чтобы уточнить, Compass не является ORM (ни Hibernate Search), это ориентированный на поиск API, а потому, что он пытается абстрагировать базовую поисковую систему (Lucene), я предлагал посмотрите на некоторые структуры, которые он использует: Анализаторы, Фильтр анализатора, Парсер запросов и т.д.

Построение на вершине Lucene, Compass упрощает общие шаблоны использования Lucene, такие как поиск в стиле Google (...)

См. также:

Ответ 4

Эта страница, кажется, перечисляет несколько:

http://java-source.net/open-source/search-engines

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

Ответ 5

Если вы можете прочитать Objective-C и хотите увидеть рабочий пример чего-то вроде "мета-поисковой системы", вы можете взглянуть на исходный код для Google Vermilion. Он использует движок, поддерживающий очень популярную утилиту Google Quick Search Box для OS X (которая, в свою очередь, очень похожа на QuickSilver.

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