Конфигурирование indexer

Указание веб-пространства для индексирования

Каждый раз когда indexer добавляет новую ссылку или выбирает очередную ссылку для индексирования, он сначала проверяет, задана ли в indexer.conf для этой ссылки команда Server, Realm или Subnet. Ссылки, не имеющие ни одной такой соответсвующей им команде не добавляются в базу, а если же такие ссылки уже находятся в базе данных (например, после удаления одной из команд Server, Realm или Subnet из файла indexer.conf), то они удаляются при очередной попытке их индексации.

Эти команды имеют один обязательный параметр pattern и шесть необязательных: method, subsection, CaseType, MatchType, CmpType и Alias. Формат этих команд:

[Server | Realm | Subnet] [method] [subsection] [CaseType] [MatchType] [CmpType] pattern [alias]

Обязательный параметр pattern задаёт либо URL, либо его фргамент, или шаблон для сравнения.

Значение параметра subsection должно быть одним из page, path, site, world и по умолчанию используется значение path.

  1. Server path

    Описывает документы, расположенные на том же сервере и в том же подкаталоге, что и аргумент URL команды Server. Например, если задана команда Server path http://localhost/path/to/index.html, все URL, начинающиеся с http://localhost/path/to/, соответствуют этой команде Server.

    Следующие команды имеют одинаковый эффект на задание пространства индексации, и лишь отличаются адресами документов, добавляемых в базу при старте:

    
Server path http://localhost/path/to/index.html
    Server path http://localhost/path/to/index
    Server path http://localhost/path/to/index.cgi?q=bla
    Server path http://localhost/path/to/index?q=bla
    

  2. Server site

    Описывает все документы с того же самого сервера, что и аргумент команды Server. Например, Server site http://localhost/path/to/a.html описывает любой документ с сервера http://localhost/.

  3. Server world

    Если в качестве значения параметра subsection каманды Server задано word, то это описывает абсолютно любой документ. См. объяснение ниже.

  4. Server page

    При этом значении параметра subsection только URL, указанный в качестве параметра команды Server, соответствует этой команде.

  5. subsection для схемы news://

    Для схемы news:// значение subsection всегда равно site. Это обусловлено отсутствием в этой схемы директорий, как в схемах ftp:// или http://. Используйте Server news://news.server.com/ для индексирования всего ньюс-сервера. Для индексации одной ньюсгруппы, например, udm - команду Server news://news.server.com/udm

Необязательный параметр CaseType задаёт чувствительность к регистру при сравнении строк, может принимать значения case - нувствительное к регистру сравнение, и nocase - чувствительное сравнение.

Необязятельный параметр CmpType узазывает тип сравнения и может принимать значения Regex и String. Типа сравнения String означает сравнение строкового шаблона и используется по умолчанию. В параметре pattern Вы можете использовать символы ? и *, они обозначают "один символ" и "любое число символов" соответсвенно. Например, если Вы хотите описать все HTTP сайты в домене .ru, используйте эту команду:

Realm http://*.ru/*

Сравнение как регулярных выражений производится если указан параметр Regex. Например, Вы можете описать все HTTP сервера домена .ru, используя регулярное выражение:

Realm Regex ^http://.*\.ru/

Необязательный параметр MatchType определяет тип совпадения. Для этого параметра могут указываться два значения: Match и NoMatch, по умолчанию используется значение Match. Команда Realm NoMatch имеет обратный эффект. Это обозначает, что URL, не попадающий под указанный pattern, будет соответствовать этой команде Realm. Например, используйте эту команду для индексирования любых документов, за исключением .com доменов:

Realm NoMatch http://*.com/*

Необязательный параметр alias позволяет организовать сложный механизм замены URL, нежели предоставляет механизм алиасов. Смотрете Разд. Алиасы для объяснения использования параметра alias. Alias работает только с типом сравнения Regex, и не даёт никакого эффекта при типе сравнении String.

Необязательный параметр method в командах Server, Realm и Subnet описывает действие, которое будет произведено с документами, соответствующими его команде и может принимать значения Allow, Disallow, HrefOnly, CheckOnly, Skip, CheckMP3, CheckMP3Only. Значением по-умолчанию является Allow.

  1. Allow

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

  2. Disallow

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

  3. HrefOnly

    Параметр HrefOnly означает, что документы, соответствующие его команде, не будут индексироваться, а будут только просканированы на наличие новых ссылок. Это, например, полезно при индексировании архивов почтовых рассылок. Используйте ее для описания страниц, содержащих не сами сообщения, а списки сообщений со ссылками на них. Например, этот набор команд позволяет просканировать список сообщений рассылки general@mnogosearch.org на наличие ссылок на сами сообщения, но при этом не индексировать саму страницу http://www.mail-archive.com/general%40mnogosearch.org/, а индексировать только сами сообщения:

    
Server HrefOnly Page http://www.mail-archive.com/general%40mnogosearch.org/
    Server Allow    Path http://www.mail-archive.com/general%40mnogosearch.org/
    

  4. CheckOnly

    Параметр CheckOnly означает, что документы, соответствующие его команде, будут запрашиваться методом HTTP HEAD, а не HTTP GET, т.е. будет запрошено не содержимое документа, а только краткая информация о нем: размер, дата модификации, Content-Type. Это позволяет, например, организовать проверку своего сайта на правильность ссылок:

    
Server HrefOnly  http://www.mnogosearch.org/
    Realm  CheckOnly *
    

    Эта комбинация команд заставляет indexer сканировать все документы сайта www.mnogosearch.org и собирать ссылки, находящиеся на них. Те же документы, которые находятся вне сайта www.mnogosearch.org будут проверены методом HEAD. Команда indexer -S затем поможет увидеть все ли внутренние и внешние ссылки верны.

  5. Skip

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

  6. CheckMP3

    Параметр CheckMP3 означает, что документы, соответствующие его команде, будут проверяться на наличие тэгов MP3 несмотря на наличие Content-Type, отличного от audio/mpeg. Это полезно, в частности, когда удаленный сервер выдает application/octet-stream в качестве Content-Type для файлов в формате MP3. При наличии MP3 тэгов будет произведена их индексация, а в случае их отсутствия indexer продолжит работу, предусмотренную для полученного Content-Type: запуск внутреннего или внешного парсера.

  7. CheckMP3Only

    Этот параметр работает аналогично CheckMP3, однако при отсутствии тэгов MP3 indexer не будет запускать внутренний или внешний парсер, предусмотренный для полученного Content-Type.

Команда Server

Это основная команда в файле indexer.conf. Она используется для описания веб-пространства для индексирования в виде серверов и их частей, а также добавляет заданый URL, указанный в качестве обязательного параметра pattern в базу при старте indexer для использования его в качестве стартовой точки.

Например, команда Server http://localhost/ разрешает индексировать документы сервера http://localhost/. Также, indexer вставляет документ с адресом http://localhost/ в базу данных.

Вы также можете задать некоторый подкаталог для индексирования только части сервера: Server http://localhost/subsection/. И эта команда также добавляет аргумент в базу данных для использования его в качестве стартовой точки индексирования.

Замечание: Вы можете заставить indexer не добавлять в базу URL, указанные в командах Server, задав в командной строке ключ -q. Это полезно, когда у вас несколько сотен или тысяч команд Server, а соответсвующие им URL уже добавлены в базу, в частности, это ускоряет запуск indexer.

Команда Realm

Команда Realm обладает более гибкими возможностями указания веб-пространства для индексирования. Эта команда работает почти также как и команда Server, однако отличается от нее тем, что:

  • получает в качестве аргумента не адрес сервера или его подкаталога, а шаблон адресов.

  • не добавляет аргумент в качестве стартовой точки для индексирования, поскольку аргумент не является правильным адресом, а шаблоном.

Команда Subnet

Команда Subnet предоставляет другой способ задания веб-пространства для индексирования. Она работает аналогично команде Server, с тем отличием, что указанный текстовый шаблон сравнивается не с URL, а с IP-адресом, соответсвующимe проверяемому URL. Параметр pattern для этой команды может содержать символы * и ?, обозначающие "один символ" и "любое число сиволов" соответственно. Например, если нужно описать все HTTP сайты локальной подсети, используйте следующую команду:

Subnet 192.168.*.*

Вы можете использовать необязательный параметр MatchType, работающий так же, как и аналогичный у команды Realm. Например, если Вы хотите индексировать все, за исключением подсети 195.x.x.x, используйте:

Subnet NoMatch 195.*.*.*

Использование различным параметров для сервера и его подсекций

Indexer перебирает команды Server и Realm в том порядке, в каком они указаны в файле конфигурации. Таким образом, если Вы хотите задать различные параметры, например, для всего сервера и некоторых его подсекций, Вы должны добавить строки для секций до строк, относящихся к серверу целиком. Представим, что на Вашем сервере есть директория, содержащая страницы с новостями. Очевидно, эти страницы необходимо переиндексировать чаще, нежели остальные части содержимого сервера. Следующая последовательность команд может быть полезна в этом случае:


# Add subsection
Period 200000
Server http://servername/news/

# Add server
Period 600000
Server http://servername/

Эти команды задают другой период переиндексирования для поддиректории /news/ в отличие от периода индексирования остального сервера. indexer выбирет первую команду Server для http://servername/news/page1.html т.к. это первая соответсвующая URL команда Server.

Использование indexer -f <filename>

The third scheme is very useful for indexer -i -f url.txt running. You may maintain required servers in the url.txt. When new URL is added into url.txt indexer will index the server of this URL during next startup.

Алиасы

Встроенная в mnoGoSearch поддержка алиасов дает возможность индексировать сайты, беря информацию для индексации из альтернативного источника данных. Например, при индексации локального веб-сервера можно выбирать страницы напрямую с жесткого диска без использования веб-сервера и сетевых протоколов. Либо, например, можно для индексации какого-либо сайта использовать не его основной адрес, а его более быстрое зеркало.

Команда Alias (из indexer.conf)

Формат команды "Alias" indexer.conf:


Alias <главныйURL> <вторичныйURL>

Например, для индексации http://search.mnogo.ru/ с использованием ближайшего зеркала http://www.gstammw.de/mirrors/mnoGoSearch/ нужно добавить следующие строки в indexer.conf:


Server http://search.mnogo.ru/
Alias  http://search.mnogo.ru/  http://www.gstammw.de/mirrors/mnoGoSearch/

search.cgi будет указывать ссылки с главного сайта http://search.mnogo.ru/, но индексатор будет брать данные с зеркала http://www.gstammw.de/mirrors/mnoGoSearch/.

Другой пример. Допустим, вы хотите индексировать весь домен udm.net. И один из серверов этого домена, http://home.udm.net/, расположен на локальном диске в каталоге /home/httpd/htdocs/. Чтобы это настроить нужно добавить следующее:


Realm http://*.udm.net/
Alias http://home.udm.net/ file:/home/httpd/htdocs/

Индексатор скачает home.udm.net с локального диска,а другие сайты скачает по HTTP.

Алиасы для различных частей сервера

Алиасы просматриваются в порядке их появления в indexer.conf. Таким образом можно создавать алиасы для сервера и для отдельных его частей:


# Первое - создадим алиас для каталога /stat/ , который физически находится 
# не на ожидаемом месте по умолчанию:
Alias http://home.udm.net/stat/  file:/usr/local/stat/htdocs/

# Затем создадим алиас для всего остального сервера:
Alias http://home.udm.net/ file:/usr/local/apache/htdocs/

Замечание: Обратите внимание на то, что при изменении порядка следования команд, алиас для каталога/stat/ никогда не будет обработан.

использование алиасов в команде Server

Возможно указание расположения данных для выборки индексером используя дополнительный аргумент команды Server:


Server  http://home.udm.net/  file:/home/httpd/htdocs/

Использование алиасов в команде Realm

Алиасы в команде Realm command являются очень мощным инструментом при использовании регулярных выражений. Результат работы такой команды подобен работе функции PHP preg_replace(). Алиасы в команде Realm работают только при использовании "regex" типов сравнений и не работают для "string" типов сравнений.

Синтаксис Realm алиасов:


Realm regex <URL_выражение> <алиас_выражение>

Индексатор пропускает URL на совпадение с URL_выражение строит алиас используя алиас_выражение. алиас_выражение может содержать ссылки вида $n. n - это число в диапазоне 0-9. Каждая такая ссылка заменяется текстом, взятым из n-ого по счету regex-выражения в круглых скобках. При этом $0 ссылается на текст которому соответствует все выражение целиком. Выражения в круглых скобках нумеруются слева направо (начиная с 1).

Пример: пусть ваша фирма хостит несколько тысяч пользователей и их доменов вида www.username.yourname.com. Сайт каждого пользователя расположен на диске в подкаталоге "htdocs" относительно домашнего каталога пользователя: /home/username/htdocs/.

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


Realm regex (http://www\.)(.*)(\.yourname\.com/)(.*)  file:/home/$2/htdocs/$4

Представим процесс индексации страницы http://www.john.yourname.com/news/index.html . Он построит пять ссылок - от $0 до $4:


   $0 = 'http://www.john.yourname.com/news/index.htm' (сожержит все выражение удовлетворяющее regex целиком)
   $1 = 'http://www.'      соответствует подвыражению '(http://www\.)'
   $2 = 'john'             соответствует подвыражению '(.*)'
   $3 = '.yourname.com/'   соответствует подвыражению '(\.yourname\.com/)'
   $4 = '/news/index.html' соответствует подвыражению '(.*)'

Затем индексатор построит алиас используя $2 and $4 ссылки:


file:/home/john/htdocs/news/index.html

и использует этот результат для получения документа.

Команда AliasProg

AliasProg - еще одна команда для построения алиасов. Иногда альтернативное расположение документов на локальном диске может быть слишком сложным, чтобы описать его с помощью команд Alias или Realm. AliasProg - это внешняя исполняемая программа, которая принимает в качестве аргумента URL, и возвразает его алиас на STDOUT. Использыйте $1 чтобы передать значение URL.

Например, эта команда использует программу replace из дистрибутива MySQL для замены подстроки http://www.apache.org/ на подстроку file:/usr/local/apache/htdocs/:

AliasProg  "echo $1 | /usr/local/mysql/bin/mysql/replace http://www.apache.org/ file:/usr/local/apache/htdocs/"

Команда ReverseAlias

Команда ReverseAlias позволяет видоизменить URL документа сразу же после того, как найдена ссылка на него.


ReverseAlias http://name2/   http://name2.yourname.com/
Server       http://name2.yourname.com/

В это примере все ссылки с коротким именем сервера будут преобразованы в ссылки с полным именем сервера. Это произойдет сразу же после обнаружения "короткой" ссылки, а в базу данных попадет документ с уже длинным именем сервера в адресе.

Еще одно возможное применение команды ReverseAlias - это вырезание различных ненужных кусков адреса, например PHPSESSION=XXXX.

Например, для вырезания параметра PHPSESSION из URL типа http://www/a.php?PHPSESSION=XXX, если PHPSESSION - единственный параметр, будет выглядеть так (знак ? будет вырезан тоже):

ReverseAlias regex  (http://[^?]*)[?]PHPSESSION=[^&]*$   $1

Чтобы вырезать PHPSESSION, когда он является первым параметром, при условии, что после него следуют другие параметры, т.е. http://www/a.php?PHPSESSION=xxx&.., используйте эту команду:

ReverseAlias regex  (http://[^?]*[?])PHPSESSION=[^&]*&(.*)  $1$2
Знак '&' после аргумента PHPSESSION будет вырезан, а знак вопроса не будет.

Для вырезания из URL типа http://www/a.php?a=b&PHPSESSION=xxx или http://www/a.php?a=b&PHPSESSION=xxx&c=d, где PHPSESSION не является первым параметром, используйте

ReverseAlias regex  (http://[^&]*)&PHPSESSION=[^&]*(.*)   $1$2
Знак '&' перед PHPSESSION будет тоже вырезан.

Алиасы в search.htm

Вы также можете использовать алиасы и в search.htm. Команда Alias в search.htm аналогична такой же команде в indexer.conf, но работате во время поиска, а не во время индексации.

Синтаксис команды также аналогичен команде в indexer.conf:

Alias <find-prefix> <replace-prefix>

Например, пусть в search.htm есть такая команда:

Alias http://localhost/ http://www.mnogo.ru/

Пусть поиск вернул страницу с адресом http://localhost/news/article10.html В результате, появится переменная $(Alias), которую значение которой будет равным http://www.mnogo.ru/news/article10.html

ServerTable

Начиная с версии 3.2.7 mnoGoSearch поддерживает команду ServerTable в indexer.conf.

Загрузка таблицы серверов

Когда задана команда ServerTable mysql://user:pass@host/dbname/tablename/, indexer будет загружать информацию о серверах из указаной SQL таблицы tablename. См. структуру этой таблицы в файле create/mysql/create.txt. Если для вашей базы данных нет соответсвующего скрипта со структурой этой таблицы, возьмите этот файл в качестве образца. Пожалуйста, в этом случае пришлите структуру для вашей базы на адрес !

Вы можете использовать несколько команд ServerTable для загрузки информации о серверах из различных таблиц.

Структура таблицы серверов

Таблица серверов содержит поля для описания всех необходимых параметров серверов. Имена полей соответсвуют командам в indexer.conf. Например, поле period соответсвует команде Period в indexer.conf. Значения полей по умолчанию равны значениям по умолчанию соответсвующих параметров из indexer.conf.

Поле gindex соответсвует команде Index. Имя слегка изменено во избежания использования зарезервированного в SQL имени.

Зачения некоторых полей расшифрованы в Разд. Структура таблиц базы данных в Гл. 9.

Замечание: Из таблицы серверов считываются только те записи, для которых значение поля active равно 1, а поле значение поля parent равно 0. Это даёт возможность пользователям добавлять новые URL в таблицу серверов, а администраторам - авторизовать добавленные записи.

FlushServerTable

Сбрасывает server.active в неактивное состояние для всех записей таблицы серверов. Используйте эту команду для деактивирования всех команд в таблице серверов перед загрузкой новых из indexer.conf или из другой таблицы серверов.

Внешние парсеры

mnoGoSearch indexer может использовать внешние парсеры для различных типов файлов (mime types).

Парсер - это программа, которая конвертирует один из типов файла (mime type) в text/plain или text/html. Например, если у вас есть PostScript файлы, Вы можете использовать парсер (фильтр) ps2ascii, читающий из stdin PostScript файл и выдающий текст в ascci на stdout.

Поддерживаемые типы парсеров

Indexer поддерживает четыре типа парсеров, такие что:

  • читают данные из stdin и выдают результат в stdout;

  • читают данные из файла и выдают результат в stdout;

  • читают данные из файла и помещают результат в файл;

  • читают данные из stdin и помещают результат в файл.

Установка парсеров

  1. Конфигурирование типов файлов (mime types)

    Сконфигурируйте Ваш веб-сервер на выдачу соответствующего заголовка Content-Type. Например, для apache, смотрите файл mime.types, большинство типов файлов уже указаны в нём.

    Если необходимо индексировать файлы на локальной файловой системе, или используя протокол ftp используйте команду AddType в indexer.conf для привязки типа файла к расширению файлов. Например:

    
AddType text/html *.html
    

  2. Добавление парсеров

    Добавление строк с определениями парсеров. Эти строки имеюют следующий формат с треми аргументами:

    
Mime <from_mime> <to_mime> <command line>
    

    Например, следующая строка определяет парсер для man-страниц:

    
# Use deroff for parsing man pages ( *.man )
    Mime  application/x-troff-man   text/plain   deroff
    

    Этот парсер будет получать данные из stdin и повещать результат в stdout.

    Некоторые парсеры не могут работать с stdin, а требуют указания имени файла для чтения данных. В этом случае indexer создаёт временный файл в директории /tmp, который будет удалён после завершения работы парсера. Используйте макро $1 в командной строке парсера вместо требуемого имени файла. Например, команда Mimeдля конверотора catdoc, преобразующего файлы MS Word в ascii может выглядеть так:

    
Mime application/msword text/plain "/usr/bin/catdoc -a $1"
    

    Если парсер записывает результат своей работы в файл, используйте макро $2. indexer заменить $2 на имя временного файла, запустит парсер, прочитает результат из этого временного файла, а затем удалит его. Например:

    
Mime application/msword text/plain "/usr/bin/catdoc -a $1 >$2"
    

    Парсер выше будет читать данные из первого временного файла и записывать результат во второй временный файл. Оба временных файла будут удалены по окончании работы парсера. Заметим, что результат использования этого парсера будет абсолютно таким же, как и предыдущего, они отличаютя только сопсобом выполнения: файл->stdout и файл->файл соответственно.

Воизбежание зависания парсера при выполнении

Воизбежание подвисания парсера при выполнении Вы можете указать в Вашем файле indexer.conf число времени в секундах, отводимое на работу парсеру, при помощи команды ParserTimeOut. Напрмиер:


ParserTimeOut 600

Значение по умолчанию - 300 секунд, т.е. 5 минут.

Конвееры в командных строках парсеров

Вы можете использовать конвееры в командных строках парсеров. Например, следующие строки необходимы при индексировании загнузипленых страниц man на локальном диске:


AddType  application/x-gzipped-man  *.1.gz *.2.gz *.3.gz *.4.gz
Mime     application/x-gzipped-man  text/plain  "zcat | deroff"

Кодировки и парсеры

Некоторые парсеры могут выдавать результат в кодировке, отличной от указанной в команда LocalCharset. Указание кодировки парсера даёт возможность indexer перекодировать результат в нужную кодировку. Например, если catdoc сконфигурирован на вывод результата в windows-1251, а в LocalCharset указана кодировка koi8-r, используйте следующую команду для парсера документов MS Word:


Mime  application/msword  "text/plain; charset=windows-1251" "catdoc -a $1"

Переменная окружения UDM_URL

При выполнении парсера, indexer создаёт переменную окружения UDM_URL, содержащую URL обрабатываемого документа. Вы можете использовать эту переменную в Ваших скриптах парсеров.

Некоторые внешние парсеры

  • RPM парсер от Mario Lang

    /usr/local/bin/rpminfo:

    
#!/bin/bash
    /usr/bin/rpm -q --queryformat="<html><head><title>RPM: %{NAME} %{VERSION}-%{RELEASE}
    (%{GROUP})</title><meta name=\"description\" content=\"%{SUMMARY}\"></head><body>
    %{DESCRIPTION}\n</body></html>" -p $1
    

    indexer.conf:

    
Mime application/x-rpm text/html "/usr/local/bin/rpminfo $1"
    

    Он даёт такую информацию об RPM:

    
3. RPM: mysql 3.20.32a-3 (Applications/Databases) [4]
           Mysql is a SQL (Structured Query Language) database server.
           Mysql was written by Michael (monty) Widenius. See the CREDITS
           file in the distribution for more credits for mysql and related
           things....
           (application/x-rpm) 2088855 bytes
    

  • catdoc конвертер MS Word в текст. Home page, также указан на Freshmeat

    indexer.conf: Mime application/msword  text/plain  "catdoc $1"

  • xls2csv конвертор MS Excel в текст. Поставляется в пакете catdoc.

    indexer.conf: Mime application/vnd.ms-excel text/plain "xls2csv $1"

  • pdftotext конвертор Adobe PDF в текст. Поставляется в пакете xpdf. Homepage, также указан на Freshmeat

    indexer.conf: Mime application/pdf text/plain "pdftotext $1 -"

  • unrtf конвертор RTF в html. Homepage

    
indexer.conf:
    Mime text/rtf*        text/html "/usr/local/mnogosearch/sbin/unrtf --html $1
    Mime application/rtf  text/html "/usr/local/mnogosearch/sbin/unrtf --html $1
    

Пожалуйста, присылайте Ваши скрипты и конфигурации для новых парсеров на адрес .

Остальные команды, используемые в indexer.conf

Команда Include

Вы можете включить другой конфигурационный файл в любом месте файла indexer.conf при помощи команды Include <filename>. Путь считается абсолютным, если <filename> начинается с "/":


Include /usr/local/mnogosearch/etc/inc1.conf

В противном случае пусть считается относительным:


Include inc1.conf

Команда DBAddr

Команда DBAddr является описание хранилища данных в URL-подобном стиле. Она определяет параметры (тип, хост, имя базы данных, порт, имя пользователя и пароль и т.д.) для соединения с SQL-сервером или другим хранилищем данных. Может быть задано несколько хранилищ данных. Но все команды DBAddr должны быть указаны первыми в файле конфигурации, до любой другой команды. Формат команды:


DBAddr <DBType>:[//[DBUser[:DBPass]@]DBHost[:DBPort]]/DBName/[?[dbmode=mode]{&<имя параметра>=<значение параметра>}]

Замечание: об ODBC. Используйте DBName для задания имени источника данных (DSN) ODBC. DBHost не имеет значения, используйте localhost.

Замечание: о Solid. Используйте DBHost для указания сервера Solid. DBName не имеет значения для Solid.

На данный момент поддерживаются следующие значения DBType: mysql, pgsql, msql, solid, mssql, oracle, ibase, sqlite. Actually, it does not matter for native libraries support. But ODBC users should specify one of supported values. If your database type is not supported, you may use "unknown" instead.

Пользователи MySQL могут указывать путь до Unix-сокета при соединении с localhost: mysql://foo:bar@localhost/mnogosearch/?socket=/tmp/mysql.sock

Если вы используете PostgreSQL и не указываете имя хоста, т.е. pgsql://user:password@/dbname/ в этом случае PostgreSQL не будет работать по TCP, а будет использовать Unix-сокет.

Параметр dbmode. Вы также можете указать способ хранения слов. Если указан "single", все слова сохраняются в одной таблице (файле). Если указан"multi", слова будут храниться в разных таблицах (файлах) в зависимости от длины этих слов. Режим "multi" обычно быстрее, но требует больше таблиц (файлов). Если выбран режим "crc", mnoGoSearch будет сохранять вместо слов их 32-битное целые идентификаторы, вычисленные при помощи CRC32 алгоритма. Этот режим требует меньше дискового пространства и быстрее по сравнению с режимами "single" и "multi", однако он не поддерживает поиск подстрок. Режим "crc-multi" использует туже самую структуру, как и режим "crc", но еще сохраняет идетификаторы слов в различных таблицах (файлах) в зависимости от длины этих слов, аналогично режиму "multi". По умолчанию используется режим "single".

Параметр stored. Формат: stored=StoredHost[:StoredPort]. Этот параметр служит для указания адреса хоста, на котором запущен демон stored, хранящий копии документов, относящихся к этому хранилищу.

Параметр cached. Формат: cached=CachedHost[:CachedPort]. Этот параметр служит для указания адреса хоста, на котором запущен демон cached. Используется только для способа хранения cache (см.Разд. Способ хранения Cache в Гл. 5). Каждый раз indexer будет при старте соединятся с cached по заданному адресу.

Пример:


DBAddr          mysql://foo:bar@localhost/mnogosearch/?dbmode=single