DataparkSearch 4.37 Руководство: Поисковая машина
Пред. | Глава 3. Индексирование | След.

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

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

Каждый раз когда 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. Server nofollow

   Не идти по ссылкам для любого URL, подпадающего под указаный шаблон.

6. `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, нежели предоставляет механизм алиасов. Смотрете Разд. 3.4.2 для объяснения использования параметра `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` означает, что документы, соответствующие его команде, не будут индексироваться, а будут только просканированы на наличие новых ссылок. Это, например, полезно при индексировании архивов почтовых рассылок. Используйте ее для описания страниц, содержащих не сами сообщения, а списки сообщений со ссылками на них. Например, этот набор команд позволяет просканировать список сообщений почтового архива на наличие ссылок на сами сообщения, но при этом не индексировать саму страницу каталога сообщений, а индексировать только сами сообщения:

       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`.

### 3.4.1.1. Команда 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.

### 3.4.1.2. Команда Realm

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

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

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

### 3.4.1.3. Команда Subnet

Команда Subnet предоставляет другой способ задания веб-пространства для индексирования. Она работает аналогично команде Server, с тем отличием, что указанный текстовый шаблон сравнивается не с URL, а с IP-адресом, соответствующим проверяемому URL. Параметр `pattern` для этой команды может содержать символы * и ?, обозначающие "один символ" и "любое число сиволов" соответственно, или же задаваться в виде сети в CIDR формате (a.b.c.d/m, a.b.c, a.b, a). Например, если нужно описать все HTTP сайты локальной подсети, используйте следующую команду:

    Subnet 192.168.*.*

    Subnet 192.168.10.0/24

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

    Subnet NoMatch 195.*.*.*

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

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.

### 3.4.1.5. Использование `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.

## 3.4.2. Алиасы

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

### 3.4.2.1. Команда 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.

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

Алиасы просматриваются в порядке их появления в `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/` никогда не будет обработан.

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

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

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

### 3.4.2.4. Использование алиасов в команде 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

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

### 3.4.2.5. Команда 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/"

### 3.4.2.6. Команда 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 будет тоже вырезан.

### 3.4.2.7. Алиасы в 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`

## 3.4.3. ServerTable

DataparkSearch поддерживает команду ServerTable в `indexer.conf`.

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

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

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

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

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

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

Зачения некоторых полей расшифрованы в Разд. 9.3.

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

## 3.4.4. FlushServerTable

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

## 3.4.5. Внешние парсеры

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

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

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

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

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

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

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

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

### 3.4.5.2. Установка парсеров

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` и файл->файл соответственно.

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

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

    ParserTimeOut 600

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

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

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

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

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

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

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

### 3.4.5.6. Переменная окружения DPS_URL

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

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

- RPM парсер от Mario Lang `<lang@zid.tu-graz.ac.at>`

  /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/dpsearch/sbin/unrtf --html $1
      Mime application/rtf  text/html "/usr/local/dpsearch/sbin/unrtf --html $1

- xlhtml конверотор XLS в html

  Homepage

  `indexer.conf`:

      Mime	application/vnd.ms-excel  text/html  "/usr/local/dpsearch/sbin/xlhtml $1"

- ppthtml Конвертор PowerPoint (PPT) в html. Часть проекта xlhtml 0.5.

  Homepage

  `indexer.conf`:

      Mime	application/vnd.ms-powerpoint  text/html  "/usr/local/dpsearch/sbin/ppthtml $1"

- Использование vwHtml Конвертор MS Word (DOC) в html.

  `/usr/local/dpsearch/sbin/0vwHtml.pl`:

      #!/usr/bin/perl -w

      $p = $ARGV[1];
      $f = $ARGV[1];

      $p =~ s/(.*)\/([^\/]*)/$1\//;
      $f =~ s/(.*)\/([^\/]*)/$2/;

      system("/usr/local/bin/wvHtml --targetdir=$p $ARGV[0] $f");

  `indexer.conf`:

      Mime  application/msword       text/html  "/usr/local/dpsearch/sbin/0wvHtml.pl $1 $2"
      Mime  application/vnd.ms-word  text/html  "/usr/local/dpsearch/sbin/0wvHtml.pl $1 $2"

- swf2html из Flash Search Engine SDK

  `indexer.conf`:

      Mime  application/x-shockwave-flash  text/html  "/usr/local/dpsearch/sbin/swf2html $1"

- djvutxt из djvuLibre

  `indexer.conf`:

      Mime  image/djvu  text/plain  "/usr/local/bin/djvutxt $1 $2"
      Mime  image/x.djvu  text/plain  "/usr/local/bin/djvutxt $1 $2"
      Mime  image/x-djvu  text/plain  "/usr/local/bin/djvutxt $1 $2"
      Mime  image/vnd.djvu  text/plain  "/usr/local/bin/djvutxt $1 $2"

Пожалуйста, присылайте Ваши скрипты и конфигурации для новых парсеров на адрес `<dataparksearch@datapark.ru>`.

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

### 3.4.6.1. Команда Include

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

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

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

    Include inc1.conf

### 3.4.6.2. Команда 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.

Вы можете использовать URL-кодирование для `DBUser` и `DBPass`, если вам необходимо использовать специальные символы в пароле или имени пользователя. Например, если у вас пароль `ABC@DEF`, его необходимо указывать в виде `ABC%40DEF`.

На данный момент поддерживаются следующие значения `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 и PostgreSQL могут указывать путь до Unix-сокета при соединении с `localhost`: `mysql://foo:bar@localhost/dpsearch/?socket=/tmp/mysql.sock`

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

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

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

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

`Параметр charset`. Формат:`charset=DBCharacterSet`. Этот параметр может быть использован для задания кодировки соединения с базой данных. Кодровка, задаваемая в этом параметре должна совпадать с кодирокой, заданой командой LocalCharset.

Пример:

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

### 3.4.6.3. Команда VarDir

Вы можете задать альтернативную директорию для данных способа хранения `cache` и данных `stored`:

    VarDir /usr/local/dpsearch/var

### 3.4.6.4. Команда NewsExtensions

Включает расширенную поддержку групп новостей. Значение по умолчанию `no`.

    NewsExtensions yes

### 3.4.6.5. Команда SyslogFacility

Может быть использована, если Datapark был скомпилировал с поддержкой `syslog` и вы хотите изменить значение по умолчанию. Задаваемое значение должно быть одним из описаных в файле `syslog.conf`. См. syslog.conf(5).

    SyslogFacility local7

### 3.4.6.6. Команда LocalCharset

Задаёт кодировку, которая будет использоваться для хранения информации в базе данных. Данные во всех других кодировках будут перекодированы в эту кодировку. См. Разд. 7.1 для подробного описания как выбрать LocalCharset для языков, используемых на вашем сайте или сайтах, а также списка поддерживаемых кодировок. Эта команда должны быть задана один раз и имеет глобальный эффект для всего файла конфигрурации. Значение по умолчанию: `iso-8859-1` (`latin1`).

    LocalCharset koi8-r

### 3.4.6.7. Команда StopwordFile

Загружает стоп-слова из указаного файла. Вы можете задать как абсолютный, так и относительный путь. Относительный путь задаётся от директории `etc`. Можно использовать несколько команд StopwordFile.

    StopwordFile stopwords/en.sl

### 3.4.6.8. Команда LangMapFile

Загружает из указанного файла карту языка и кодировки для автоматического их определения. Вы можете задать как абсолютный, так и относительный путь. Относительный путь задаётся от директории `etc`. Можно использовать несколько команд LangMapFile.

    LangMapFile langmap/en.ascii.lm

### 3.4.6.9. Команды указания длины слова

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

    MinWordLength 1
    MaxWordLength 32

### 3.4.6.10. Команда MaxDocSize

Эта команда служит для указания максимального размера документа. Значение по умалчанию: 1048576 (1 Mb). Имеет глобальный эффект.

    MaxDocSize 1048576

### 3.4.6.11. Команда MinDocSize

Данная команда включает режим только проверки наличия (CheckOnly) для документов размером менее указанного. Значение по умолчанию: 0. Имеет глобальный эффект.

    MinDocSize 1024

### 3.4.6.12. Команда IndexDocSizeLimit

Используйте эту команду для задания максимального размера данных, записываемых в индекс для одного документа. Значение по умолчанию: 0. Это обозначает без ограничений. Команда действует до следующей команды IndexDocSizeLimit.

    IndexDocSizeLimit 65536

### 3.4.6.13. Команда URLSelectCacheSize

Задаёт число документов отбираемых для индексации за раз. Значение по умолчанию: 1024.

    URLSelectCacheSize 10240

### 3.4.6.14. Команда URLDumpCacheSize

Задаёт число документов отбираемых за раз для записи индексов cache mode, загрузки данных в searchd или для расчёта индекса популярности. Значение по умолчанию: 100000.

    URLDumpCacheSize 10240

### 3.4.6.15. Команда HTTPHeader

Вы можете добавить свои собсвенные заголовки в запрос HTTP на получение документов к индексации. Вы не можете вказывать таким образом заголовки "If-Modified-Since" или "Accept-Charset", эти заголовки формируются indexerом самостоятельно. Заголовок "User-Agent: DataparkSearch/version" также формируется самостоятельно, но вы можете заменить его. Command has global effect for all configuration file.

    HTTPHeader "User-Agent: My_Own_Agent"
    HTTPHeader "Accept-Language: ru, en"
    HTTPHeader "From: webmaster@mysite.com"

### 3.4.6.16. Команда Allow

    Allow [Match|NoMatch] [NoCase|Case] [String|Regex] <arg> [<arg> ... ]

Данная команда разрешает к индексирования URL, подпадающие под указаный шаблон. Первые три необязательных параметра задают тип сравнения. Значения по умолчанию: Match, NoCase, String. Используйте `NoCase` или `Case` чтобы указать чувтсвительное или нечувствительное к регистру сравнение. Используйте `Regex` чтобы выбрать сравнение на основе регулярного выражения. Используйте `String` чтобы задать сравнение по текстовому шаблону с использование спецсимволов. Возможные спецсимволы: '*' - для обозначения любого числа символов и '?' - для обозначения одного символа. Обратите внимание, что символы '?' и '*' имеют специальное значение при указатии тпа сравнения `String`. Вы можете использовать `Regex` для описания документов, содержащих символы '?' и/или '*' в URL. `String` намного быстрее `Regex`. Используйте `String` где это возможно. Вы можете задавать несколько аргументов для одной команды Allow. Вы можете использовать эту команду в любом месте файла конфигурации. Имеет глобальный эффект. Имейте ввиду, что DataparkSearch автоматически добавляет команду `Allow regex .*` после чтения файла конфигурации. Это означает, что разрешено всё, что не зыпрещено явно.

Примеры

    #  Разрешить всё:
    Allow *
    #  Разрешить всё, исключая расширения .php .cgi .pl не учитывая регист и используя регулярные выражения:
    Allow NoMatch Regex \.php$|\.cgi$|\.pl$
    #  Разрешить расширение .HTM учитывая регистр:
    Allow NoCase *.HTM

### 3.4.6.17. Команда Disallow

    Disallow [Match|NoMatch] [NoCase|Case] [String|Regex] <arg> [<arg> ... ]

Данная команда запрещает к индексирования URL, подпадающие под указаный шаблон. Значение первых трёх необязательных параметров такое же как и у команды Allow Вы можете указывать несколько аргументов для одной команды Disallow. Имеет глобальный эффект. Примеры:

    # Disalow URLs that are not in udm.net domains using "string" match:
    Disallow NoMatch *.udm.net/*
    # Disallow any except known extensions and directory index using "regex" match:
    Disallow NoMatch Regex \/$|\.htm$|\.html$|\.shtml$|\.phtml$|\.php$|\.txt$
    # Exclude cgi-bin and non-parsed-headers using "string" match:
    Disallow */cgi-bin/* *.cgi */nph-*
    # Exclude anything with '?' sign in URL. Note that '?' sign has a
    # special meaning in "string" match, so we have to use "regex" match here:
    Disallow Regex  \?

### 3.4.6.18. Команда CheckOnly

    CheckOnly [Match|NoMatch] [NoCase|Case] [String|Regex] <arg> [<arg> ... ]

Значение первый трёх необязательных параметров такое же, как и у команды Allow. Для URL, подпадающих под эту команду, вместо HTTP метода GET indexer будет использовать метод HEAD. Это означает, что будет проверятся только наличие документа, сам же документ скачиваться и индексироваться не будет. Это полезно для zip,exe,arj и других двоичных файлов, например, для организации поиска по имени файла (что-то наподобии ftp-поиска). Вы можете задавать несколько аргументов для одной команды CheckOnly. Имеет глобальный эффект. Примеры:

    # Check some known non-text extensions using "string" match:
    CheckOnly *.b	  *.sh   *.md5
    # or check ANY except known text extensions using "regex" match:
    CheckOnly NoMatch Regex \/$|\.html$|\.shtml$|\.phtml$|\.php$|\.txt$

### 3.4.6.19. Команда HrefOnly

    HrefOnly [Match|NoMatch] [NoCase|Case] [String|Regex] <arg> [<arg> ... ]

Значение первый трёх необязательных параметров такое же, как и у команды Allow. Используйте эту команду для поиска ссылок в указанных URL. Содержимое самих файлов не индексируется. Команда имеет глобальный эффект. Например, при индексировании почтовых архивов, индесные страницы (типа mail.10.html, thread.21.html, etc.) будут сканировать для поиска ссылок на страницы с письмами, но не будут индексироваться:

    HrefOnly */mail*.html */thread*.html

### 3.4.6.20. Команда CheckMp3

    CheckMp3 [Match|NoMatch] [NoCase|Case] [String|Regex] <arg> [<arg> ...]

Значение первый трёх необязательных параметров такое же, как и у команды Allow. Если URL подпадает под эту команду, то indexer скачает небольшую порцию этого документа и попробует найти тэги MP3 в этом фрагменте. При обнаружении, тэги будут проиндексированы. В противном случае, документ будет скачен целиком и обработан в обычном порядке. Замечание: это работает только для серверов, поддерживающих HTTP/1.1, т.е. используется заголовок "Range: bytes".

    CheckMp3 *.bin *.mp3

### 3.4.6.21. Команда CheckMp3Only

    CheckMP3Only [Match|NoMatch] [NoCase|Case] [String|Regex] <arg> [<arg> ...]

Эта команда аналогична команде CheckMP3, за исключением: если тэги MP3 не будут обнаружены, документ не скачивается целиком и не обрабатывается.

    CheckMP3Only *.bin *.mp3

### 3.4.6.22. Команда IndexIf

    IndexIf [Match|NoMatch] [NoCase|Case] [String|Regex] <section> <arg> [<arg> ... ]

Эта команда служит для разрешения индексирования при совпадении шаблона `arg` по заданой секции `section` документа. Значение первых трёх необязательных параметров такое же как и у команды Allow (см. Разд. 3.4.6.16).

Пример

    IndexIf regex Title Manual
    IndexIf body "*important detail*"

### 3.4.6.23. Команда NoIndexIf

    NoIndexIf [Match|NoMatch] [NoCase|Case] [String|Regex] <section> <arg> [<arg> ... ]

Эта команда служит для запрещения индексирования при совпадении шаблона `arg` по заданой секции `section` документа. Значение первых трёх необязательных параметров такое же как и у команды Allow (см. Разд. 3.4.6.16).

Пример

    NoIndexIf regex Title Sex
    IndexIf body *xxx*

### 3.4.6.24. Команда HoldBadHrefs

    HoldBadHrefs <time>

Задаёт сколько времени хранить документы с ошибочными кодами статуса перед удалением их из базы. Например, если какой-либо веб-сервер временно недоступен, indexer не удалит страницы этого сервера сразу. Однако, если этот сайт будет недоступен продолжительное время, страницы с этого сайта будут удалены по истечении указаного интервала времени. Формат для параметра <time> см. в описании команды Period в Разд. 3.4.6.29.

    HoldBadHrefs 30d

### 3.4.6.25. Команда DeleteOlder

    DeleteOlder <time>

Задаёт сколько времени хранить проиндексированные документы в базе. Например, при индексировании новостных сайтов, вы можете задать период, по истечении которого устаревшие страницы новостей будут удалены из базы, независимо от статуса этих документов. Формат для параметра <time> см. в описании команды Period в Разд. 3.4.6.29. Значение по умолчанию: 0, - означает "не проверять". Вы можете указать несколько команд DeleteOlder, например, по одной для каждой команды Server.

    DeleteOlder 7d

### 3.4.6.26. Команда UseRemoteContentType

    UseRemoteContentType yes/no

Данная команда указывает брать ли тип содержимого из заголовков ответа сервера (yes) или определять его на основании комманд AddType, указанных в файле конфигурации (no). Если задано 'no' и по заданым командам AddType определить тип не удаётся, то используется тип из заголовков ответа сервера. Значение по умолчанию: yes.

    UseRemoteContentType yes

### 3.4.6.27. Команда AddType

    AddType [String|Regex] [Case|NoCase] <mime type> <arg> [<arg>...]

Эта команда ассоциирует MIME тип с указаным расширением файла. Эти команды используются при индексировании ссылок со схемой file://. Первые два необязательных параметра используются для задания типа сравнения. По умолчанию используются "String" "NoCase" (нечувствительное к регистру стравнение строк с использованием символов-шаблонов '?' и '*').

    AddType image/x-xpixmap	*.xpm

### 3.4.6.28. Команда ParserTimeOut

Используйте команду ParserTimeOut для задания максимального времени выполнения внешнего парсера - во избежание возможного зависания indexer.

    ParserTimeOut 300

### 3.4.6.29. Команда Period

    Period <time>

Задаёт период переиндексирования. <time> указывается в формате 'xxxA[yyyB[zzzC]]' (пробелы допустимы между xxx и A и yyy и т.д) здесь xxx, yyy, zzz - числа (возможно отризательные!) A, B, C могут быть одним из следующего: s - секунда M - минута h - час d - день m - месяц y - год (эти символы такие же как и для функций strptime/strftime). Примеры:

     15s - 15 секунд
     4h30M - 4 часа и 30 минут
     1y6m-15d - 1 год и шесть месяцев минус 15 дней
     1h-10M+1s - 1 час минус 10 минут плюс 1 секунда

Если указано только число без какого-либо символа, то подразумевается, что время задано в секундах. Можно задавать несоклько команд Period, например по одной на каждую команду Server.

    Period 7d

### 3.4.6.30. Команда PeriodByHops

    PeriodByHops <hops> [ <time> ]

Задаёт период переиндексирования для страниц зо значением глубины в "мышиных кликах" равным <hops>. Формат для <time> такой же как и для команды Period.

Можно задавать несоклько команд PeriodByHops, например по одной на каждую команду Server. Если параметр <time> опущен, действие указаного ранее значения отменяется.

Если для конретного значения <hops> не задан период переиндексирования командой PeriodByHops, в этом случае используется значение, заданное командой Period.

### 3.4.6.31. Команда ExpireAt

    ExpireAt [ A [ B [ C [ D [ E ]]]]]

Эта команда позволяет задать точное время устаревания документов. Может задаваться для каждой команда Server/Realm в отдельности, действует до конца файла конфигурации или до следующей команды ExpireAt. ExpireAt указаная без аргументов означает отмену всех ранее указаных значений. A - обозначает минуту, может быть * или 0-59; B - обозначает час, может быть * или 0-23; C - обозначает день месяца, может быть * или 1-31; D - обозначает месяц, может быть * или 1-12; E - обозначает день недели, может быть * или 0-6, 0 - Воскресенье. Команда ExpireAt имеет больший приоритет над командами Period или PeriodByHops.

### 3.4.6.32. Команда Tag

    Tag <string>

Используйте эту команду по своему усмотрению чтобы сгруппировать несколько сайтов, помечая их указаным тэгом. При индексировании или поиске, вы можете ограничиваться сайтами только указаного тэга. Можно указывать несколько команд Tag. Команда Tag имеет значение до следующей команды Tag или до конца файла конфигурации. Значение по умолчанию: пустая строка.

### 3.4.6.33. Команда TagIf

    TagIf <tag> [Match|NoMatch] [NoCase|Case] [String|Regex] <section> <arg> [<arg> ... ]

Присвоить документу тэг <tag>, если значении секции `section` подпадает под указаный шаблон `arg`. Значение первых трёх необязательных параметров такое же как для команды Allow (см. Разд. 3.4.6.16).

Пример

    TagIf Docs regex Title Manual

### 3.4.6.34. Команда Category

    Category <string>

Вы можете помечать документы при помощи вложеный категорий. Категория - строка шестнадцатиричных цмфр. Вы можете иметь до 6 уровней вложенности по 256 элементов на каждом уровне. Пустая категоря означает корень дерева категорий. См. Разд. 6.2 для дальнейшего описания.

    # This command means a category on first level:
    Category AA
    # This command meand a category on 5th level:
    Category FFAABBCCDD

### 3.4.6.35. Команда CategoryIf

    CategoryIf <category> [Match|NoMatch] [NoCase|Case] [String|Regex] <section> <arg> [<arg> ... ]

Присвоить документу категорию <category>, если значение секции `section` подпадает под указаный шаблон `arg`. Значение первых трёх необязательных параметров такое же как для команды Allow (см. Разд. 3.4.6.16).

Пример

    CategoryIf 010F regex Title "JOB ID"

### 3.4.6.36. Команда DefaultLang

    DefaultLang <string>

Задаёт язык документов по умолчанию.

    DefaultLang en

### 3.4.6.37. Команда MaxHops

    MaxHops <number>

Максимальная глубина пути в "мышиных кликах" от начального URL. Значение по умолчанию: 256. Может быть задано несколько команд MaxHops, например, по одной на каждую команду Server. Действует до конца файла конфигурации, либо до следующей команды MaxHops.

    MaxHops 256

### 3.4.6.38. Команда TrackHops

    TrackHops yes|no

Включает или выключает ведение счётчика hops при переиндексировании. Значение по умолчанию: no (выключено). Если включено, то при переиндексировании значение hops для url вычисляется заново, иначе значение hops вычисляется один раз при помещении url в базу.

    TrackHops yes

### 3.4.6.39. Команда MaxDocsPerServer

    MaxDocsPerServer <number>

Щграничивает число документов, выкачиваемых с одного Server. Значение по умолчанию: -1, что обозначает "без ограничений". Если задано неотрицательное значение, за один запуск indexer будет проиндексировано не более указанного числа документов, относящихся к одной команда Server или Realm. Может быть задано несколько команд MaxDocsPerServer, например, по одной на каждую команду Server. Действует до конца файла конфигурации, либо до следующей команды MaxDocsPerServer.

    MaxDocsPerServer 100

### 3.4.6.40. Команда MaxNetErrors

    MaxNetErrors <number>

Задаёт максимальное число сетевых ошибок для каждого сервера. Значение по умолчанию: 16. Используйте значение 0 для выключения проверки. Если число ошибок при обращении к какому-то серверу превысит заданое число (например, хост временно не доступен), indexer больше небудет пытаться получить документы с этого сервера. Команда действует до конца файла конфигурации, или до следующей команды MaxNetErrors.

    MaxNetErrors 16

### 3.4.6.41. Команда ReadTimeOut

    ReadTimeOut <time>

Таймаут ожидания соединения или продолжения получения данных. Формат `<time>` см. Разд. 3.4.6.29. Значение по умолчанию: 30 секунд. Команда действует до конца файла, или до следующей команды ReadTimeOut.

    ReadTimeOut 30s

### 3.4.6.42. Команда DocTimeOut

    DocTimeOut <time>

Указывает максимальное время ожидания получения всего документа. Формат `<time>` см. в Разд. 3.4.6.29. Значение по умолчанию: 90 секунд. Команда действует до конца файла, или до следующей команды DocTimeOut.

    DocTimeOut 1m30s

### 3.4.6.43. Команда NetErrorDelayTime

    NetErrorDelayTime <time>

Указывает период, на который будет отложена обработка документа при возникновении сетевых ошибок при его получении. Формат `<time>` см. в Разд. 3.4.6.29. Значение по умолчанию: один день.

    NetErrorDelayTime 1d

### 3.4.6.44. Команда Robots

    Robots yes/no

Расрешает или запрещает использование `robots.txt` и <META NAME="robots" ...> для исключения страниц. Используйте `no`, например, для проверки ссылок на вашем сайте или сайтах. Имейте в виду, что игнорирование чужих `robots.txt` не приветсвуется сетевым этикетом. Команда действует до конца файла, или до следующей команды Robots. Значение по умолчанию: yes.

    Robots yes

### 3.4.6.45. Команда RobotsPeriod

По умолчанию, данные из robots.txt хранятся в SQL-базе одну неделю. Вы можете изменить этот период используя команду RobotsPeriod:

    RobotsPeriod <time>

См. формат <time> в описании команды Period из Разд. 3.4.6.29.

    RobotsPeriod 30d

### 3.4.6.46. Команда DetectClones

    DetectClones yes/no

Включает или выключает механихм определения и игнорирования "клонов" докуиентов. При включении, indexer будет определять копии документов, расположенных, например, на зеркалах, и не индексировать их повторно. Значение по умолчанию: yes.

    DetectClones no

### 3.4.6.47. Команда Section

    Section <string> <number> <maxlen> [ <pattern> <replacement> ]

где `<string>` - имя секции и `<number>` - ID секции, от 0 до 255. Используйте 0 если вы не хотите индексировать какую-либо секцию. Лучше всего использовать различные ID для разных секций. В этом случае вы сможете во время поиска задавать различные веса конретным секциям, или же исключать их из результатов поиска. Параметр `<maxlen>` задаёт максимальный размер секции, который будет сохранён в базе (хотя сама секция будет проиндексирована целиком). Используйте 0, если вы не хотите сохранять в базе значение секции. `<pattern>` и `<replacement>` - шаблон и замена, аналогичная используемым в regex, для извления значения секции из тела документа.

    # Standard HTML sections: body, title
    Section	body			1	256
    Section title			2	128
    Section GoodName                3       128 "<h1>([^<]*)</h1>" "<b>GoodName:</b> $1"

### 3.4.6.48. Команда HrefSection

    HrefSection <string> [ <pattern> <replacement> ]

где `<string>` - имя секции, `<pattern>` и `<replacement>` - шаблон и замена, аналогичная используемым в regex, для извления значения секции из тела документа. Используйте эту команду для извлечения ссылок из тела документа.

    # Standard HTML sections: body, title
    HrefSection	link
    HrefSection     NewLink "<newlink>([^<]*)</newlink>" "$1"

### 3.4.6.49. Команда Index

    Index yes/no

Разрешает или запрещает сохранения проиндексированных слов в базу. Применяется, например, при проверке ссылок на страницах сайта или сайтов. Команда действует до конца файла, или до следующей команды Index. Значение по умолчанию: yes. Prevent indexer from storing words into database.

    Index no

### 3.4.6.50. Команда RemoteCharset

    RemoteCharset <charset>

`<сharset>` - кодовая страница по умолчанию для последующих команд Server, Realm или Subnet. Используется при индексировании "плохих" серверов, не предоставляющих информации о кодировке в заголовках ответа сервера или в <META NAME="Content" Content="text/html; charset="some_charset"> на страницах. Команда действует до конца файла, или до следующей команды RemoteCharset. Значение по умолчанию: iso-8859-1 (latin1).

    RemoteCharset iso-8859-5

### 3.4.6.51. Команда URLCharset

    URLCharset <charset>

`<charset>` - кодовая страница для аргументов последующих команд Server, Realm или URL. Эта команда задаёт кодовубю страницу только для аргументов последующих команду и не влияет на определение кодировки индексируемых страниц. Имеет меньший приоритет, нежели команда RemoteCharset. Может задаваться перед каждой командой Server, Realm или URL и действует до конца файла конфигурации или до следующей команды URLCharset. Значение по умолчанию: ISO-8859-1 (latin1).

    URLCharset KOI8-R

### 3.4.6.52. Команда ProxyAuthBasic

    ProxyAuthBasic login:passwd

Задаёт http proxy basic authorization. Может быть указана перед каждой командой Server, но действует только для этой команды!. Может также использовать перед командой Proxy. Примеры:

    ProxyAuthBasic somebody:something

### 3.4.6.53. Команда Proxy

    Proxy your.proxy.host[:port]

Вместо прямого соединения, использовать прокси-соединение. Значение номера порта по умолчанию: 3128 (Squid). Команда действует до конца файла, или до следующей команды Proxy. Если не указано ни одной команды Proxy, или для этой команды не указан хост - используется прямое соединение. Примеры:

    #           Proxy on atoll.anywhere.com, port 3128:
    Proxy atoll.anywhere.com
    #           Proxy on lota.anywhere.com, port 8090:
    Proxy lota.anywhere.com:8090
    #           Disable proxy (direct connect):
    Proxy

### 3.4.6.54. Команда AuthBasic

    AuthBasic login:passwd

Включает использование basic http authorization. Может быть указана перед каждой командой Server, но действует только для этой команды!. Примеры:

    AuthBasic somebody:something

    # If you have password protected directory(ies), but whole server is open,use:
    AuthBasic login1:passwd1
    Server http://my.server.com/my/secure/directory1/
    AuthBasic login2:passwd2
    Server http://my.server.com/my/secure/directory2/
    Server http://my.server.com/

### 3.4.6.55. Команда ServerWeight

    ServerWeight <number>

Задаёт вес Server для расчёта Popularity Rank (см. Разд. 8.5.3). Значение по умолчанию: 1.

    ServerWeight 1

### 3.4.6.56. Команда OptimizeAtUpdate

    OptimizeAtUpdate yes

Задаёт стратегию оптимизации индекса слов. Значение по умолчанию: no. Если включено, позволяет экономить дисковое пространство, однако замедляет процесс индексирования. Может указываться и в `indexer.conf` и в `cached.conf`.

### 3.4.6.57. Команда SkipUnreferred

    SkipUnreferred yes

Значение по умолчанию: no. Используйте эту команду для пропуска переиндексации документов, на которые никто не ссылается. Для этой команды требуется включить сбор ссылок (см. Разд. 8.5.3).

### 3.4.6.58. Команда Bind

    Bind 127.0.0.1

Если ваша система имеет несколько сетевых интерфейсов, вы можете используйте эту команду для задания локального ip адреса.

### 3.4.6.59. Команда URL

    URL http://localhost/path/to/page.html

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

### 3.4.6.60. Команды ServerDB, RealmDB, SubnetDB и URLDB

    URLDB pgsql://foo:bar@localhost/portal/links?field=url

Эти команды аналогичны командам Server, Realm, Subnet и URLсоответственно, но аргументы для вставки в базу выбираются из указанного поля SQL-таблицы. В примере выше ссылки выбираются из базы `portal`, SQL-таблицы `links` и поля `url`.

Пред. | Начало | След.
Поддержка Content-Encoding | Уровень выше | Расширенные возможности индексирования