Встроенная в DataparkSearch поддержка алиасов дает возможность индексировать сайты, беря информацию для индексации из альтернативного источника данных. Например, при индексации локального веб-сервера можно выбирать страницы напрямую с жесткого диска без использования веб-сервера и сетевых протоколов. Либо, например, можно для индексации какого-либо сайта использовать не его основной адрес, а его более быстрое зеркало.
Формат команды "Alias" indexer.conf:
Alias <главныйURL> <вторичныйURL>
Например, для индексации http://www.site.ru/ с использованием ближайшего зеркала http://www.other.com/mirrors/site.ru/ нужно добавить следующие строки в indexer.conf:
Server http://www.site.ru/ Alias http://www.site.ru/ http://www.other.com/mirrors/site.ru/
search.cgi будет указывать ссылки с главного сайта http://www.site.ru/, но индексатор будет брать данные с зеркала http://www.other.com/mirrors/site.ru/.
Другой пример. Допустим, вы хотите индексировать весь домен 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 http://home.udm.net/ file:/home/httpd/htdocs/
Алиасы в команде 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 - еще одна команда для построения алиасов. Иногда альтернативное расположение документов на локальном диске может быть слишком сложным, чтобы описать его с помощью команд 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 позволяет видоизменить 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 будет тоже вырезан.
ReverseAliasProg - команда, аналогичная обеим командам AliasProg и ReverseAlias. Она получает параметры аналогично команде AliasProg, но преобразовывет URL перед вставкой в базу, аналогично команде ReverseAlias.
Вы также можете использовать алиасы и в search.htm. Команда Alias в search.htm аналогична такой же команде в indexer.conf, но работате во время поиска, а не во время индексации.
Синтаксис команды также аналогичен команде в indexer.conf:
Alias <find-prefix> <replace-prefix>
Например, пусть в search.htm есть такая команда:
Alias http://localhost/ http://www.site.ru/
Пусть поиск вернул страницу с адресом http://localhost/news/article10.html В результате, появится переменная $(Alias), которую значение которой будет равным http://www.site.ru/news/article10.html
Пред. | Начало | След. |
Указание веб-пространства для индексирования | Уровень выше | ServerTable |