Это сработает, чтобы объединить print
с <<
и управлять порядком:
print( std::cout << "Hello, world!" ) << std::endl;
Или, если вы хотите, чтобы функция, вызываемая с помощью <<
, см. ответ Йоахима.
Существует несколько частей к поисковой системе. Вообще говоря, безнадежно общим способом (люди, не стесняются редактировать , если Вы чувствуете, можно добавить лучшие описания, ссылки, и т.д.):
поисковый робот . Это - часть, которая проходит сеть, захватывает страницы и хранит информацию о них в некоторое центральное хранилище данных. В дополнение к самому тексту Вы захотите вещи как время, Вы получили доступ к нему и т.д. Поисковый робот должен быть достаточно умным для знания, как часто поразить определенные домены, для повиновения соглашению robots.txt, и т.д.
синтаксический анализатор . Это считывает данные, выбранные поисковым роботом, синтаксические анализы это, сохраняет любые метаданные, это должно, выбрасывает спам, и возможно делает предложения к поисковому роботу на том, что выбрать в следующий раз вокруг.
индексатор . Читает материал синтаксический анализатор, проанализированный, и создает инвертированные индексы в условия, найденные на веб-страницах. Это может быть столь умно, как Вы хотите, чтобы он был - применяют методы обработки естественного языка, чтобы сделать индексы понятий, вещей перекрестной ссылки, добавить синонимы, и т.д.
занимающий место механизм . Учитывая несколько тысяч URL, соответствующих "яблоку", как Вы решаете, какой результат является лучшим? Выступ индекс не дает Вам ту информацию. Необходимо проанализировать текст, связывающуюся структуру, и безотносительно других частей, Вы хотите посмотреть на и создать некоторые очки. Это может быть сделано полностью на лету (это действительно твердо), или на основе некоторых предварительно вычисленных понятий "экспертов" (см. PageRank, и т.д.).
фронтэнд . Что-то должно получить пользовательские запросы, поразить центральный механизм и ответить; это что-то должно быть умным о кэшировании результатов, возможно смешивании в результатах других источников, и т.д. Это имеет свой собственный набор проблем.
Мой совет - выбирает, который из этих интересов Вы больше всего, загрузите Lucene или Xapian или любой другой проект с открытым исходным кодом там, вытащите бит, который делает одну из вышеупомянутых задач и пытается заменить ее. Хотелось бы надеяться, с чем-то лучше:-).
Некоторые ссылки, которые могут оказаться полезными: "Гибкий поисковый робот" , статья из Эстонии (на английском языке) Поисковая система Сфинкса , индексация и поисковый API. Разработанный для большого DBS, но модульный и открытый. "Информационный поиск , учебник о IR от Manning и др. Хороший обзор того, как индексы создаются, различные проблемы, которые подходят, а также некоторое обсуждение проверки, и т.д. Бесплатная онлайн версия (на данный момент)!
Выезд nutch, это записано тем же парнем, который создал Lucene ( Doug Cutting ).
Storing complete log in /root/.pip/pip.log
настолько открытый, что файл, найдите любые ошибки и см. точные сообщения об ошибках от gcc
.
– damienfrancois
13 November 2013 в 14:28
Xapian является другой опцией для Вас. Я услышал, что это масштабируется лучше, чем некоторые реализации Lucene.
Если Вы интересуетесь приобретением знаний о теории позади информационного поиска и некоторые технические детали позади реализации поисковых систем, я могу рекомендовать книгу , Управляющую Гигабайтами Ian Witten, Alistair Moffat и Tim C. Bell. (Раскрытие: Alistair Moffat был моим университетским супервизором.), Хотя это немного датировано теперь (первый выпуск вышел в 1994 и второе в 1999 - что так твердо о руководящих гигабайтах теперь?), базовая теория является все еще звуковой, и это - большое введение и в индексацию и в использование сжатия в индексации и поисковых системах.
Я запустил бы с существующего проекта, такого как поисковая система с открытым исходным кодом от Wikia.
[Мое понимание - то, что проект Поиска Wikia закончился. Однако я думаю, связываясь с существующим проектом с открытым исходным кодом, хороший способ упростить в обязательство этого размера.]
Мне кажется, что самая большая часть является индексацией сайтов. Создание ботов, чтобы обыскивать Интернет и проанализировать их содержание.
друг А и я говорили о том, как удивительный Google и другие поисковые системы должны находиться под капотом. Миллионы результатов в под половиной секунды? Сумасшедший. Я думаю, что они, возможно, задали результаты поиска для обычно искавших объектов.
редактирование: Этот сайт выглядит довольно интересным.
Существуют порты Lucene. Пехлеви имеет одно в свободном доступе. Взгляните на это быстрое учебное руководство: http://devzone.zend.com/node/view/id/91
Вот немного отличающийся подход, если Вы так не интересуетесь программированием его, но более интересующиеся результатами: считайте здание им с помощью API Google Custom Search Engine .
Преимущества:
Недостатки:
Вот метод, который я использую.
public static <T> T initializeAndUnproxy(T entity) {
if (entity == null) {
throw new
NullPointerException("Entity passed for initialization is null");
}
Hibernate.initialize(entity);
if (entity instanceof HibernateProxy) {
entity = (T) ((HibernateProxy) entity).getHibernateLazyInitializer()
.getImplementation();
}
return entity;
}
-121--1819537- Вы ищете Фитинг кривой . Все простые алгоритмы для этой задачи, которые я знаю, попытаются вписать точки данных в какой-то полином, но я подозреваю, что есть те, которые смогут различать полиномы и неполиномы тоже.
-121--3044080-Я тоже заинтересован в поисковой системе. Я рекомендовал Apache Hadoop MapReduce и Apache Lucene. Ускорение работы Hadoop Cluster - лучший способ.