# Алиасы
DataparkSearch - Полнофункциональная поисковая машина для Интернета и Интранета с открытым исходным кодом. Распространяется по лицензии GNU.
Keywords: shareware, freeware, интернет, unix, поисковик, поисковая машина, поиск, поиск информации, интранет, open source, opensource, search, searching, software, udmsearch, engine, indexing, system, web, ftp, http, cgi, php, SQL, MySQL, database, php3, FreeBSD, Linux, Unix, DataparkSearch, MacOS X, Mac OS X, Windows, 2000, NT, 95, 98, GNU, GPL, url, grabbing

DataparkSearch Engine 4.53: Справочное руководство
Пред. | Глава 3. Индексирование | След.

# 3.7. Алиасы

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

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

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

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

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

ReverseAliasProg - команда, аналогичная обеим командам AliasProg и ReverseAlias. Она получает параметры аналогично команде AliasProg, но преобразовывет URL перед вставкой в базу, аналогично команде ReverseAlias.

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