|
|
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/
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:
Затем индексатор построит алиас используя $2 and $4 ссылки: file:/home/john/htdocs/news/index.html и использует этот результат для получения документа. 3.7.5. Команда AliasProgAliasProg - еще одна команда для построения алиасов. Иногда альтернативное расположение документов на локальном диске может быть слишком сложным, чтобы описать его с помощью команд 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. Алиасы в 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
|
||||||||||||