Broker получает индексную информацию от Gatherer'ов и других брокеров и управляет ею, а также предлагает вебинтерфейс для запросов к индексируемой информации.
Брокер автоматически запускается командой RunHarvest
.
Другие подобные команды описываются в разделе
Запуск системы: команда RunHarvest и связанные с ней команды.
В этом разделе мы обсуждаем различные способы переделки и настройки брокера, как администрировать брокер и различные программные интерфейсы брокера.
Как показано на рисунке 1, брокер использует гибкий интерфейс индексирования, который поддерживает множество подсистем индексирования. По умолчанию брокер Harvest'а использует Glimpse в качестве индексатора, но также с брокером работают другие индексаторы, как Swish и WAIS (как свободный freeWAIS, так и коммерческий WAIS) (см. раздел Использование различных индексирующих/поисковых систем вместе с Broker'ом).
Для создания нового брокера запустите программу CreateBroker
. Она
задаст вам ряд вопросов о том, как бы вы хотели сконфигурировать ваш брокер, а
потом атоматически создаст и сконфигурирует его. Для запуска вашего брокера используйте
программу RunBroker
, которую создаст CreateBroker
.
Брокер должен запускаться при перезапуске вашей системы. Чтобы предотвратить брокер
от коллекционирования при запуске, используйте опцию -nocol. Есть много способов,
которыми вы можете переделать и настроить брокер, обсуждаемые в разделах
Настройка индексирования Glimpse в Broker'е и
Использование различных индексирующих/поисковых систем вместе с Broker'ом.
Вы также можете использовать
команду RunHarvest
, рассматриваемую в разделе
Запуск системы: команда RunHarvest и связанные с ней команды,
чтобы создать как брокер, так и Gatherer.
Брокер Harvest'а может работать с различными типами запросов. Запросы, обрабатываемые отдельным брокером, зависят от того, какая индексируюшая/поисковая система используется внутри его (например, WAIS не поддерживает некоторые из запросов, которые поддерживает Glimpse). В этом разделе мы описываем весь синтаксис. Если данный брокер не поддерживает определенный тип запросов, он вернет ошибку, когда пользователь совершит запрос такого типа.
Простейшие запросы - это отдельные ключевые слова, например:
lightbulb
Поиск по общеупотребительным словам (как ``computer'' или ``html'') может занять много времени.
В частности для больших брокеров часто полезно использовать более мощные запросы. Harvest поддерживает много раздичных индексирующих/поисковых движков с разными возможностями. На данный момент, наш самый мощный (и чаще используемый) поисковый движок -- Glimpse, который поддерживает:
Ниже описываются различные типы запросов (и как их использовать). Заметьте, что вы используете тот же синтаксис, независимо от, того какой движок запущен в данном брокере, но не все движки поддерживают все вышеперечисленные свойства. В частности, некоторые брокеры используют WAIS, который иногда ищет быстрее, чем Glimpse, но поддерживает только булевские комбинации в запросах и возможность указать ограничения на количество выдаваемых результатов.
Различные опции: учет регистра, приблизительное сопоставление, возможность показывать совпавшие строки и записи и возможность указать пределы числа совпадений -- все они могут быть указаны пи помощи кнопок и меню в формах запросов брокера.
Структурированный запрос имеет вид:
tag-name : value
Где tag-name -- это имя атрибута резюме содержимого, а value - значание для поиска по этому атрибуту. Если вы кликните на резюме содержимого (Content Summary), вы увидите, какие атрибуты доступны для данного брокера. Список наиболее общих атрибутов показан в разделе Список общих имен атрибутов SOIF .
Поиск по ключевым словам и структурированные запросы могут быть объединены, используя булевские операторы (AND и OR) для образования сложных запросов. Без скобок логические операции применяются слева направо. Для фраз с несколькими словами или регулярными выражениями вы должны заключать строки в двойные кавычки, например,
"internet resource discovery"
или
"discov.*"
Двойные кавычки также должны быть использованы при поиске по символам, не являющимся буквами алфавита или цифрами.
Arizona
тот запрос вернет все объекты брокера, содержащие слово Arizona.
Arizona AND desert
Этот запрос веренеи все объекты содержащие оба слова где угодно в объекте в любом порядке.
"Arizona desert"
Этот запрос вернет все объекты брокера, которые содержат Arizona desert как фразу. Заметьте, что вокруг фразы нужно ставить двойные кавычки.
"Arizona desert" AND windsurfing
Этот запрос вернет все объекты брокера, которые содержат Arizona desert как фразу и слово windsurfing.
Title : windsurfing
Этот запрос вернет все объекты брокера, в которых атрибут Title содержит значение windsurfing.
"Arizona desert" AND (Title : windsurfing)
Этот запрос вернет все объекты брокера, которые содержат фразу Arizona desert и в которых атрибут Title содержит значение windsurfing.
Glimpse поддерживает некоторые типы регулярных выражений. Поиск по регулярным выражениям может быть намного медленне других типов поиска. Далее следует частичный список возмошных шаблонов. (За деталями обратитесь к документации Glimpse.)
Регулярные выражения на данный момент ограничены по длине до приблизительно 30 символов, не включая метасимволы. Регулярные выражения обычно не будут переступать за границы слов (так как в индексе хранятся только слова). Так, например, ``lin.*ing'' найдет ``linking'' или ``flinching'', но не ``linear programming''.
Страница запросов может иметь следующие меню (типа checkbox), чтобы позволить контролировать спецификацию запроса.
При выборе этого меню запрос станет нечувствительным к регистру (заглавные и строчные буквы не различаются). В противном случае запрос будет чувствительным к регистру. По умолчанию - без учета регистра.
При выборе этого меню ключевые слова будут сопоставляться по границам слов. В противном случае ключевое слово будет сопоставляться части слова (или фразы). Например, ``network'' сопоставится с ``networking'', ``sensitive'' сопоставится с ``insensitive'', и ``Arizona desert'' сопоставится с ``Arizona desertness''. По умолчанию -- сопоставление по границам слов.
Glimpse позволяет запросу содержать некоторое число ошибок. Ошибка -- это или удаление, вставка или замещение одного символа. Опция лучшее сопоставление (Best Match) найдет сопоставление (-ия) с наименьшим числом ошибок. По умолчанию -- 0 (ноль) ошибок.
Примечание: Предыдущие три опции не применяются к именам атрибутов. Имена атрибутов всегда чувствительны к регистру и не допускают ошибок.
Harvest позволяет фильтровать результаты запроса по любому из частей запроса, используя атрибуты, определенные в разделе Список общих имен атрибутов SOIF. Это делается определением параметров filter в форме запросов. Можно определить больше, чем один параметр фильтра; они будут конкатенированы булевым И. Параметры фильтра состоят из двух частей, разделенных вертикальной чертой ``|''. Первая часть - это выражение запроса, которое прикрепляется к запросу пользователя, используя AND перед отправлением запроса брокеру. Опциональная вторая часть -- это текст HTML, который будет показываться на странице результатов для того, чтобы дать пользователю некоторую информацию по примененному фильтру.
Пример:
<SELECT NAME="filter">
<OPTION VALUE=''>Нет фильтра
<OPTION VALUE='uri: "xyz\.edu"|Seach only xyz.edu'>Искать только xyz.edu
<OPTION VALUE='type: html|HTML documents only'>Искать только документы HTML
</SELECT>
Первая опция везвращает неотфильтрованный результат. Вторая опция возвращает только страницы с ``xyz.edu'' в их URL'ах. Третья опция возвращает только документы HTML. Обратитесь на страницу расширенного поиска брокера за другими примерами.
Страница может иметь следующие чекбоксы, которые позволяют контролироватьf представление результатов запроса.
При выборе этого меню, результат будет содержать строки из резюме содержимого, которые удовлетворили запросу. В противном случае, совпавшие строки не будут показаны. По умолчанию -- показывать совпавшие строки.
Некоторые бъекты имеют короткие, в одну строчку, описания. При выборе этого меню будут показываться описания. В противном случае описания объектов не будут показываться. По умолчанию -- показывать описания.
Это меню позволяет вам выбрать, показывать ли ссылки на проиндексированные резюме объектов. По умолчанию -- не показывать.
Администратору Harvest'а можно настроить, как будет генерироваться
результат запроса брокеру. Это можно сделать, модифицируя конфигурационный файл, который
читается программой Perl search.cgi
во время выполнения запроса.
search.cgi
позволяет настроить почти любой аспект его
HTML-выхода. Файл $HARVEST_HOME/cgi-bin/lib/search.cf содержит
определения выхода по умолчанию. Отдельные брокеры могуть быть настроены путем создания
похожего файла, который заменит определения по умолчанию.
Определения заключаются в начальные и конечные тэги типа SGML. Например:
<HarvestUrl>
http://harvest.sourceforge.net/
</HarvestUrl>
Последний символ новой строки удаляется из каждого определения, так что вышеуказанная строка станет ``http://harvest.sourceforge.net/''.
Подстановка переменной происходит для каждого определения перед выводом.
Некоторые особые переменные определены в search.cgi
, которые могут
использоваться внутри определения. Например:
<BrokerLoad>
Sorry, the Broker at <STRONG>$host, port $port</STRONG>
is currently too heavily loaded to process your request.
Please try again later.<P>
</BrokerLoad>
Когда определения будут печататься, переменные $host и $port будут заменены на имя хоста и порт брокера.
Следующие переменные определяются как только начинает обрабатываться строка запроса. Они могут быть использованы перед тем, как брокер вернет какой-либо результат.
$maxresult максимальное возвращаемое число совпавших строк
$host имя хоста брокера
$port порт брокера
$query строка запроса, введенная пользователем
$bquery полная строка запроса, посланная брокеру
Эти переменные определены для каждого объекта, удовлетворяющего запросу (подходящего), выдаваемого брокером.
$objectnum число возращаемых объектов
$desc атрибут описания подходящих объектов
$opaque ВСЕ совпавшие строки из подходящих объектов
$url Первоначальный URL of the matched object
$A метод доступа к $url (например, http)
$H имя хоста (включая порт) из $url
$P часть $url, содержащая путь
$D часть $P с именем каталога
$F часть $P с именем файла
$cs_url URL резюме содержимого в базе данных брокера
$cs_a часть $cs_url с методом доступа
$cs_h часть $cs_url с именем хоста
$cs_p часть $cs_url, содержащая путь
$cs_d часть $cs_p с именем каталога
$cs_f часть $cs_p с именем файла
Ниже приведен частичный список определений. Полный список можн найти в файле search.cf. Здесь описаны только определения, которые, возможно, вам захочется изменить.
Значение времени ожидания для search.cgi
. Если брокер не отвечает
в течение этого времени, search.cgi
выходит.
Первая часть страницы результатов. Должно вероятно содержать элемент HTML <TITLE> и строку запроса пользователя.
Последняя часть страницы результатов. По умолчанию имеет ссылки URL к домашней странице брокера и домашней странице проекта Harvest.
Это вывод прямо перед циклом по всем подходящим объектам.
Это вывод сразу после завершения цикла по объектам.
Это определение печатает подошедший объект. Оно, возможно, должно включать переменные $url, $cs_url, $desc и $opaque.
Печатается между <ResultSetEnd> и <ResultTrailer>, если запрос был успешным. Вероятно, должно включать число найденных объектов и/или совпавших строк.
Похоже на <EndBrokerResults>, но печатается, если вернул ошибку в ответ на запрос.
Формат printf
строки для объекта под номером
($objectnum).
Печатает предупреждающее сообщение, если результат был усечен до максимального числа совпавших строк.
Следующие определения немного отличаются, так как они определяются как инструкции Perl, а не строки.
Определяется для каждой совпавшей строки, возвращаемой брокером. Может быть использовано для разделения совпавших строк или, чтобы удалить главную ``совпавшую строку'' и строки с именами атрибутов.
Определяется вначале программы search.cgi
. Может быть
использовано для установки специальных переменных или чтения файлов данных.
Определяется для каждого объекта прямо перед вызовом <PrintObject>.
Определяется для каждого атрибута SOIF, запрошенного для подходящего объекта (см. раздел Выдача атрибутов SOIF в результатах $att установлено для имени атрибута, а $val установлено для значения атрибута.
Следующие определения демонстрируют, как менять вывод
search.cgi
. <PerObjectFunction>, что
определение не пусто. Оно также присоединяется спереди к строке ``matched data:''
перед любой совпавшей строкой. Определение <PrintObject> печатает
номер объекта, описание и индексные данные, все в первой строчке.
Описание располагается вокруг тэгов привязки HMTL (anchor tags), так что оно становится ссылкой
на первоначально созданный объект. Слова ``indexing data'' - ссылка на
программу displaySOIF, которая отфрматирует резюме содержимого для броузеров HTML.
Номер объекта отформатирован как число в скобках, такое что все вместе занимает
до четырех символов.
Определение <MatchedLineSub> включает четыре замещающих выражения. Первое удаляет слова ``Matched line'': в начале каждой совпавшей строчки. Второе удаляет атрибуты SOIF вида ``partial-text{43}:'' вначале каждой строки. Третье показывает имена атрибутов (например, partial-text#) курсивом. Последнее выражение разделяет каждую строку пятью пробелами и располагает ее вместе со строкой описания. Опрделение <EndBrokerResults> слегка модифицирует отчет о том, сколько объектов было найдено.
# Пример показывает некоторые особенности настройки вывода Harvest'а
# Больше информации можно найти на:
# http://harvest.sourceforge.net/harvest/doc/html/manual.html
# PerObjectFunction - это код Perl определенный для каждого совпадения
<PerObjectFunction>
# Создаем описание
# Являются ли описания, предоставленные Harvest'ом очень короткими (например, пропущен <TITLE>)?
if (length($desc) < 5) {
# Да: использовать вместо него имя файла ($F)
$description = "<I>File:</I> $F";
} else {
# Нет: использовать описание Harvest'а
$description = $desc;
}
# Форматируем совпавшие строки ("мутные данные") если данные есть
if ($opaque ne '') {
$opaque = "<strong>matched lines:</strong><BR>$opaque"
}
</PerObjectFunction>
# PrintObject определяет появление совпадений
<PrintObject>
$objectnum <A HREF="$url"><STRONG>$description</STRONG></A> \
[<A HREF="$cs_a://$cs_h/Harvest/cgi-bin/displaySOIF.cgi?object=$cs_p">\
indexing data</A>]
<pre>
$opaque
</pre>\n
</PrintObject>
# Форматируем появление числа совпадений
<ObjectNumPrintf>
(%2d)
</ObjectNumPrintf>
# Форматируем появление каждой совпавшей строки
<MatchedLineSub>
s/^Matched line: *//; # Remove "Matched line:"
s/^([\w-]+# )[\w-]+{\d+}:\t/\1/; # Remove SOIF attributes of the form "partial-text{43}:"
s/^([\w-]+#)/<I>\1<\/I>/; # Format attribute names as italics
s/^.*/ $&/; # Add spaces to indent text
</MatchedLineSub>
# Модифицируем отчет о том, сколько объектов было найдено
<EndBrokerResults>
<STRONG>Found $nopaquelines matched lines, $nobjects objects.</STRONG>
<P>\n
</EndBrokerResults>
Конфигурационные файлы search.cgi
хранятся в
$HARVEST_HOME/cgi-bin/lib. Имя настроенного файла занесено в список
формы query.html и передано как опция программе
search.cgi
.
Самый простой способ определить настроенный файл -поместить тэг <INPUT> в форму HTML:
<INPUT TYPE="hidden" NAME="brokerqueryconfig" VALUE="custom.cf">
Другой способ - позволить пользователям выбирать различные настройки при помощи списка <SELECT>:
<SELECT NAME="brokerqueryconfig">
<OPTION VALUE=""> Default
<OPTION VALUE="custom1.cf"> Customized
<OPTION VALUE="custom2.cf" SELECTED> Highly Customized
</SELECT>
Можно запросить атрибуты SOIF из формы запросов HTML. Простое приближение - включить список select в форму запросов:
<SELECT MULTIPLE NAME="attribute">
<OPTION VALUE="title">
<OPTION VALUE="author">
<OPTION VALUE="date">
<OPTION VALUE="subject">
</SELECT>
Таким образом пользователь может контролировать, какие атрибуты показывать. Расположение этих атрибутов при выводе результатов в HTML контролируется инструкцией <FormatAttribute> в файле search.cf, оисанном в разделе Конфигурационный файл search.cf.
Чтобы позволить броузерам легко взаимодействовать с брокером, мы реализовали WWW интерфейсы: административный и менеджер запросов брокеру. Эти WWW интерфейсы, которые включают несколько файлов HTML и несколько программ, использующих Common Gateway Interface (CGI), состоят из:
Пользователи проходят через следующие шаги при использовании брокера для обнаружения информации:
Чтобы предоставить WWW-интерфейс, брокер должен быт запущен вместе с сервером HTTPr. Раздел Дополнительная установка для Harvest Broker описывает, как как конфигурировать ваш HTTP сервер для работы с Harvest.
Вы можете запустить брокер не на той машине, на которой запущен сервер HTTP, но если вы хотите, чтобы пользователи могли видеть резюме содержимого брокера, тогда файлы брокера должны быть доступны вашему серверу HTTP. Вы можете подмонтировать по NFS те файлы или вручную скопировать их. Вам также понадобится изменить файл Brokers.cf и указать на хост, где запущен брокер.
CreateBroker
создает несколько файлов HTML и предоставляет GUI пользователю:
Содержит GUI для интерфейса запросов. CreateBroker
установит
разные файлы query.html для Glimpse, Swish и WAIS,
так как каждая подсистема требует различных установок по умолчанию и поддерживает
разную функциональность (например, WAIS не поддерживает приблизительный поиск, в отличие от Glimpse).
Это также ``домашняя страница'' для брокера и ссылка на нее включена
внизу во всех страницах результатов запросов.
Содержит GUI для административного интерфейса. Это файл устанавливается в каталог admin брокера.
Содержит информацию об именах хостов и портах поддерживаемых брокеров. Этот
файл устанавливается в каталог $HARVEST_HOME/brokers. Файл
query.html использует значение тэга FORM ``broker'', чтобы передать
имя брокера search.cgi
, который в свою очередь получает имя хоста и порт
из Brokers.cf.
Когда вы устанавливаете WWW интерфейс (см. раздел The Broker), несколько программ устанавливаются в каталог /Harvest/cgi-bin вашего сервера HTTP:
search.cgi
Эта программа берет отправленный запрос из query.html и посылает его указанному брокеру. Затем она получает результаты запроса от брокера, форматирует его в HTML и отправляет пользователю.
displaySOIF.cgi
Эта программа показывает резюме содержимого объектов брокера.
BrokerAdmin.pl.cgi
Эта программа принимает административную команду из admin.html и отправляет ее соответствующему брокеру. Она получает результат от брокера и выдает его пользователю.
WWW интерфейс брокера включает несколько файлов помощи, написанных на HTML. Эти файлы устанавливаются на ваш сервер HTTP в каталог /Harvest/brokers, когда вы устанавливаете брокер (см. раздел Broker):
Предоставляет учебное пособие по построению запросов брокеру и использованию форм query.html. query.html имеет ссылку на эту страницу.
Предоставляет учебное пособие по отправдению брокеру административных команд, используя форму admin.html. admin.html имеет ссылку на эту страницу.
Предоставляет краткое описание SOIF.
У администраторов есть два основных способа управления брокером: через конфигурационные файлы broker.conf и Collection.conf, и через интерактивный административный интерфейс. Интерактивный интерфейс контролирует разные средства и действующие параметры в брокере. Мы предоставляем HTML интерфейс для этих административных команд. Обратитесь в раздел Описание интерфейса коллектора: Collection.conf за дополнительной информацией о интерфейсе коллектора и административном интерфейсе брокера.
Файл broker.conf - это список имен переменных и их значений,
который состоит из информации о брокере (такой как каталог, где он
находится) и порт, на котором он запущен. Файл Collection.conf (обратитесь
в раздел
Описание интерфейса коллектора: Collection.conf
за примером) - это список
точек коллекционирования, откуда брокер будет собирать свою индексную информацию.
Программа CreateBroker
автоматически генерирует оба эти
конфигурационные файла. Вы можете вручную отредактировать их в случае необходимости.
Программа CreateBroker
также создает файл admin.html,
который является административным интерфейсом для команд брокеру. Заметьте,
что все административные команды требуют пароль, определенный в
broker.conf.
Замечание: Изменения конфигурации брокера не сохраняются при перезапуске брокера. Постоянные изменения конфигурации брокера должны быть сделаны вручную редактированием файла broker.conf.
Административный интерфейс, созданный CreateBroker
, имеет следующие
поля:
Command Выбрать административную команду. Ниже приведено описание
команд.
Parameters Указать параметры для тех команд, для которых это необходимо.
Password Административный пароль.
Broker Host Хост, на котором запущен брокер.
Broker Port Порт, который прослушивает брокер.
Административный интерфейс, созданный CreateBroker
, поддерживает
следующие команды:
Добавить объект(ы) брокеру. Параметр -- список файлов, содержащих объекты SOIF, которые нужно добавить.
Записать всю накопленную лог-информацию и закрыть текущий лог-файл. Заставляет брокер прекратить вести логи. Параметров нет.
Предоставляет сбор мусора в файле реестра. Параметров нет.
Удалить все объекты из брокера, у которых истекло время жизни Time-to-Live. Параметров нет.
Удаляет все объекты, которые удовлетворяют данному запросу. Параметр -- запрос с таким же синтаксисом, как и пользовательский запрос. Флаги запросов на данный момент не поддерживаются.
Удалить объекты(ы), указанные данными числами OID. Параметр --
список чисел OID. Числа OID могут быть получены, используя
команду dumpregistry
.
Отменяет ведение лог-информации о данном типе событий. Параметр -- тип события. Чтобы посмотреть список событий, см. ``Включить логи по типу''.
Включает ведение лог-информации о данном типе событий. Параметр -- имя типа события. Сейчас типы событий ограничены следующим набором:
Update Вести логи по обновленным объектам.
Delete Вести логи по удаленным объектам.
Refresh Вести логи по восстановленным объектам.
Query Вести логи по запросам пользователей.
Query-Return Вести логи по объектам, возвращенным на запрос.
Cleaned Вести логи по объектам, удаленным уборщиком (cleaner).
Collection Вести логи о коллекционировании.
Admin Вести логи об административных событиях.
Admin-Return Вести логи о результатах административных событий.
Bulk-Transfer Вести логи о событиях с с болшой передачей данных.
Bulk-Return Вести логи об объектах, отправленных при большой передаче.
Cleaner-On Вести логи о событиях очистки.
Compressing-Registry Вести логи о сжатии реестра.
All Вести логи о всех событиях.
Записать всю накопленную лог-информацию в текущий лог-файл. Параметров нет.
Генерирует основную статистику об объектах брокера в базе данных. Параметров нет.
Индексировать только объекты, которые были добавлены недавно. Параметров нет.
Индексировать всю базу данных объектов. Параметров нет.
Открывает новый лог-файл. Если файл не существует, создает новый. Параметр - имя (относительно брокера) файла для логов.
Заставляет брокер прочитать заново реестр и переиндексировать все. Процесс брокера на самом деле не убивается. Параметров нет.
Заменяет текущий лог-файл на LOG.YYYYMMDD. Открывает новый лог-файл. Параметров нет.
Устанавливает значение переменной конфигурации брокера. Принимаеи два параметра, имя переменной и ее новое значение. Переменные конфигурации, которые можно установить -- те, которые встречаются в файле broker.conf. Изменение действительно до тех пор, пока процесс брокера не умрет.
Очевидно останавливает сервер. Параметров нет.
Начинает сбор. Параметров нет.
Иногда брокер может прекратить работать с продублированными резюме для некоторых URL. Это может случиться, когда Gatherer меняет свое описание, имя хоста или номер порта. Используйте эту команду, чтобы брокер нашел повторяющиеся URL'ы. Когда находятся два объекта с одинаковыми URL'ами, объект с наибольшей временной меткой удаляется.
Если вы построите брокер, а потом решите не индексировать некоторые данные (например, если вы решите разделить данные для индексирования двумя разными брокерами), вам нужно изменить конфигурационный файл Gatherer'а, перезапустить Gatherer, а потом позволить старым объектам устареть в брокере (так как брокер и Gatherer содержат отдельные базы данных). Если вы хотите вычистить данные брокера быстрее, вы можете использовать административный интерфейс брокера одним из трех способов:
% mv objects objects.old
% rm -rf objects.old &
% broker ./admin/broker.conf -new
После удаления объектов, вам следует использовать команду индексировать все.
Можно предоставить административные функции, используя
программу brkclient
из командной строки и скриптов оболочки.
Например, чтобы выполнить собирание (collection), запустите:
% brkclient localhost 8501 '#ADMIN #Password secret #collection'
Посмотрите файл admin.html вашего брокера, если хотите увидеть полный список административных команд.
Система индексирования Glimpse может быть настроена различными способами, чтобы
удовлетворить вашим конкретным нуждам. Наверное, больше всего внимания заслуживает
параметр ``степень детализации индексирования'' (indexing granularity), для которго Glimpse
предоставляет три опции: крохотный индекс (2-3% всего
размера всех файлов), маленький индекс (7-8%) и
средний индекс (20-30%). Времена поиска лучше с большими индексами.
Изменяя опцию GlimpseIndex-Option в файле broker.conf
вашего брокера, вы можете настроить Glimpse для использования одной из трех
опций детализации индекса. По умолчанию, GlimpseIndex-Option строит средний индекс,
используя программу glimpseindex
.
Заметьте также, что при помощи Glimpse поиск осуществляется быстрее, если выключить ``показывать совпавшие строки'' на странице запросов брокеру.
Glimpse использует ``stop-list'', чтобы избежать индексирование очень распространенных слов. Этот список не фиксирован, он получается при построении индекса. По умолчанию для среднего индекса каждое слово, которое встречается по крайней мере 500 раз в 1 Mb (в среднем), помещается в stop-list. Для маленького индекса по умолчанию в stop-list помещаются слова, которые появляются в 80% всех файлов (если файло не меньше 256, иначе stop-list не создается). Установки по умолчанию можно изменить, используя опцию -S, за которой должно стоять новое чисол (среднее в 1 Mb при использовании индексирования -b, или % от файлов при использовании индексирования -o). Крошечные индексы не содержат stop-list'ов (их влияние минимально).
glimpseindex
включает несколько других опций, которые могут быть
интересными. Вы можете больше узнать об этих опциях (и о Glimpse в
общем) в
документации Glimpse.
Если вы захотите изменить то, как брокер вызывает программу
glimpseindex
, то отредактируйте файл
src/broker/Glimpse/index.c в исходниках дистрибутива Harvest'а.
Система Glimpse поставляется со вспомогательным сервером, называемым
glimpseserver
, который позволяет считывать индексы в процесс и хранить
в памяти. Это помогает избежать добавочной стоимости чтения индекса и запуска
больших процессов для каждого поиска. glimpseserver
автоматически
запускается каждый раз, когда вы запускаете брокер, или заново все индексируете. Если вы
не хотите запускать glimpseserver
, тогда установите GlimpseServer-Host
в ``false'' в вашем broker.conf.
По умолчанию Harvest использует подсистему индекса/поиска Glimpse. Однако Harvest определяет гибкий интерфейс индексирования, что позволяет администраторам брокера использовать разные индексирующие/поисковые подсистемы и удовлетворять требованиям, особенным для данного домена. Например, может оказаться полезным снабдить реляционную базу данных сервером.
На данный момент мы распространяем код с поддержкой интерфейса как свободного, так и коммерческого движков WAIS, Glimpse и Swish.
Ниже мы обсуждаем, как использовать другие движки индекса/поиска вместо Glimpse в брокере, и коротко обсуждаем, как объединить новый движок индекса/поиска с брокером.
Harvest включает поддержку для испльзования Swish, как индексирующего движка, с брокером. Swish -- это хорошая альтернатива Glimpse, если вас нужна поддержка более быстрого поиска, и вы не желаете использовать более мощные свойства запросов. Также это иногда альтернатива, если есть проблемы со статусом прав использования Glimpse.
Чтобы использовать Swish с существующим брокером, вам нужно изменить переменную Indexer-Type в broker.conf на ``Swish''.
Вы также можете указать, что вы хотите использовать Swish для брокера, когда используете
команду RunHarvest
, запустив: RunHarvest -swish
.
Поддержка использования WAIS (как freeWAIS, так и WAIS Inc.) как подсистем брокера индексирования и поиска включена в дистрибутив Harvest. WAIS -- это хорошая альтернатива Glimpse, если вас нужна поддержка более быстрого поиска, и вы не желаете использовать более мощные свойства запросов.
Чтобы использовать WAIS с существующим брокером, вам нужно изменить переменную
Indexer-Type в broker.conf на ``WAIS''; вы можете
выбрать вариант WAIS, установив переменную WAIS-Flavor в
broker.conf на ``Commercial-WAIS'', ``freeWAIS'' или ``WAIS''.
Иначе CreateBroker
спросит вас, хотите ли вы использовать WAIS и
где находятся программы WAIS (waisindex
, waissearch
,
waisserver
и, в коммерческой версии WAIS,
waisparse
). Когда вы запустите брокер, после построения индекса
автоматически запустится сервер WAIS.
Вы также можете указать, что хотите использовать WAIS для брокера, когда используете
команду RunHarvest
, запустив: RunHarvest -wais
.
Брокер получает индексную информацию от Gatherer'ов или других брокеров через свой интерфейс Collector. Список точек коллекционирования указан в конфигурационном файле admin/Collection.conf. Этот файл содержит точки коллекционирования в каждой строке из 4 полей. Первое поле -- хост удаленного Gatherer'а или брокера, второе поле -- номер порта на этом хосте, третье поле -- тип кооекции, а четвертое поле -- фильтр запросов или --, если фильтра нет.
Брокер поддерживает различные типы коллекций, которые приведены ниже:
Тип Удаленный процесс Описание Сжатие?
---------------------------------------------------------------------
0 Gatherer Полное коллекционирование всякий раз Нет
1 Gatherer Инкрементальное коллекционирование Нет
2 Gatherer Полное коллекционирование всякий раз Да
3 Gatherer Инкрементальное коллекционирование Да
4 Broker Полное коллекционирование всякий раз Нет
5 Broker Инкрементальное коллекционирование Нет
6 Broker Коллекционированное на основе запроса Нет
7 Broker Инкрементальное на основе запроса Нет
Спецификация фильтра запроса для типов коллекций 6 и 7 содержит две части: --QUERY keywords и опционально --FLAGS flags. Часть --QUERY передается брокеру как ключевые слова для хапроса (ключевые слова могут быть любым булевским и/или структурированным запросом); часть --FLAGS передается брокеру как флаги запросу, в зависимости от индексера. Следующая таблица показывает действующие флаги для поддерживаемых индексеров:
Индексер Флаг Описание
-----------------------------------------------------------------------------
All: #desc показать строки описания
Glimpse: #index case insensitive без учета регистра
#index case sensitive с учетом регистра
#index error number допустимо число "number" ошибок
#index matchword поиск по границам слов
#index maxresult number максимальное число результатов "number"
#opaque показать совпавшие строки
Wais: #index maxresult number максимальное число результатов "number"
#opaque показать оценки и ранжирования
Ниже приведен пример Collection.conf, который собирает информацию с 2 Gatherer'ов (один -- сжатое инкрементальное коллекционирование, а другой -- несжатое полное) и с 3 брокеров (один -- инкрементальное на основе временной метки, а другие -- с использованием фильтров запросов):
gatherer-host1.foo.com 8500 3 --
gatherer-host2.foo.com 8500 0 --
broker-host1.foo.com 8501 5 --
broker-host2.foo.com 8501 6 --QUERY (URL : document) AND gnu
broker-host3.foo.com 8501 7 --QUERY Harvest --FLAGS #index case sensitive
Брокер запущен, но всегда возвращает empty query results (пустой результат на запрос).
Посмотрите в файле broker.out в каталоге брокера на сообщения об ошибках. Если ваш брокер не проиндексировал данные, используйте административный интерфейс, чтобы заставить брокер построить индекс (см. раздел Администрирование брокера.
Когда я отправляю запрос брокеру, я получаю "500 Server Error" (ошибка сервера 500).
В основном, ошибки ``500'' относятся к неверно работающим программам CGI или неверно сконфигурированному серверу httpd. Убедитесь, что userid пользователя, запустившего сервер HTTP имеет доступ к каталогу Harvest'а cgi-bin и файлам Perl в $HARVEST_HOME/lib. Обратитесь в раздел Дополнительная установка для Harvest Broker за деталями.
Я вижу продублированные документы в моем брокере.
Брокер предоставляет устранение дубликатов на основе комбинации контрольных сумм MD5 и хоста, имени, версии Gatherer'а. Таким образм, вы можете убрать продублированные документы, если ваш брокер собирает с более чем одного Gatherer'а, каждый из которых собирает с одного набора URL. (Как отступление, причина этого замечания о устранении дубликатов связана с тем, что отдельный брокер может содержать несколько различных объектов SOIF для одного URL, но просуммированных различными способами.)
Есть два решения проблемы:
search.cgi
, проделав построчное сравнение URL.
Брокер долго работает и не отвечает на запросы.
Некоторые запросы очень тяжелые, так как вовлекают много работы с вводом/выводом. По этой причине мы модифицировали Broker, так что если запрос занимает больше чем 5 минут, процесс запроса убивается. Лучшее решение -- использовать менее тяжелые запросы, например, используя меньше распространенных ключевых слов.
Некоторые из опций запросов (такие как структурированные запросы или запросы с учетом регистра) не работают.
Обычно это означает, что вы используете движок индекса/поиска, который не поддерживает
структурированных запросов. Если вы устанавливаете свой брокер (а не используете чей-то еще),
обратитесь в раздел
Использование различных индексирующих/поисковых систем вместе с Broker'ом
за деталями о том, как
переключиться на другие движки. Или может быть ваша
программа search.cgi
старой версии и должна быть обновлена.
Я получаю syntax errors (ошибки синтаксиса), когда посылаю запрос.
Обычно это значит, что вы не испотзовали двойные кавычки, где необходимо. См. раздел Отправление запросов Broker'у.
Когда я посылаю запрос, я получаю ответ быстрее, чем, как я думаю, нужно потратить на обработку запроса, и ответ содержит данные с мусором.
Вероятно, это указывает, что ваш httpd
плохо сконфигурирован.
Обычно не ставят 'ScriptAlias' перед 'Alias' в файле
conf/httpd.conf, когда запускают Apache httpd
. См. раздел
Дополнительная установка для Harvest Broker.
Когда я делаю изменения в конфигурационном файле брокера при помощи административного интерфейса, они теряются после перезапуска брокера. is restarted.
Административный интерфейс брокера не сохраняет изменений при перезапуске. Постоянные изменения в конфигурации брокера следует делать в файле broker.conf.
Мой брокер работает очень медленно.
Настройка производительности может быть сложна, но скорее всего проблема в том, что вы запускаете брокер на машине с недостаточным количеством RAM, и много записываете в своп, так как движок запросов выбрасывает страницы памяти, чтобы получить доступ к необходимому индексу и файлам с данными. (В UNIX буферный кэш диска борется с программными страницами и страницами даных за память.)
Простой способ проверить -- запустить ``vmstat 5'' в одном окне, и после пары строк вывода, выполнить запрос из другого окна. Так напечатается строка с измерениями статуса виртуальной памяти вашей машины каждые 5 секунд. В частности, посмотрите на колонки ``pi'' и ``po''. Если числа вдруг прыгнут в диапазон 500-1000 после выполнения запроса, значит вы много записываете страниц памяти.
Заметьте, что проблемы со страницами обостряются при одновременном запуске программ с интенсивным вводом/выводом в память или на диск. Одновременные запросы одному брокеру не должны вызывать проблем со страницами, так как брокер обрабатывает запросы последовательно.
Лучше всего запускать брокер на почти не используемой машине с памятью, по меньшей мере, 128 MB (лучше больше, если вышеуказанный эксперимент с ``vmstat'' показывает, что вы записывает много страниц).
Другой способ улучшить производительность - запустить httpd-accelerator на
машине с вашим брокером, чтобы перехватывать запросы брокеру. Пока он
заносит в кэш результат запросов, он снизит загрузку машины, так как
он снабжен очень эффективными средствами возвращения запросов в случае
пааллельных запросов. Без акселератора результаты возвращаются процессами
search.cgi
на каждый запрос, а ядро UNIX неэффективно делит время
для этих процессов. С акселератором процессы search.cgi
быстро
умирают и дают акселератору вернуть результаты разным пользователям одновременно.
Акселератор также снизит нагрузку для получения данных (не запросов) с вашего
сервера httpd.