Яndex.Server 3.8 Free Edition : Документация для разработчиков и администраторов | ||
---|---|---|
Пред. | Глава 4. Модули индексатора, входящие в комплект поставки | След. |
Пример 4-3. Определение источника данных webds
<DataSrc id="webds"> Config webds.cfg <DataSrc>
<DataSrc id="webds"> <Webds> ... </Webds> <DataSrc>
В этом разделе описаны директивы, относящиеся к процессу индексирования через стандартный источник webds. Если какая-либо директива отсутствует в конфигурационном файле, для соответствующих параметров будут использованы указанные значения по умолчанию.
Механизм индексирования с получением новых ссылок из ранее проиндексированных документов ("сетевой паук") работает, только если определены атрибуты link, и в качестве ссылок используются значения этих атрибутов.
Пример 4-4. Пример конфигурационного файла источника webds
<Webds> Allow : /(199[0-9]|archive)/ Disallow : /(_index|default)[.]htm[l]? DefaultAreaOptions : UrlCaseFold FindLinks DefaultHttpPrefix : http://www.host.ru/ StartUrls : http://www.host.ru/ <IndexedArea> HttpPrefix http://www.company.ru/path Options GetHttp:httpOptions </IndexedArea> <IndexedArea> HttpPrefix http://www.company.ru:8080/documents FilePrefix C:\path\to\www\company\ru\documents <HttpOptions> <Authorization> UserName user UserPassword password </Authorization> </HttpOptions> </IndexedArea> <HttpOptions name="httpOptions"> Timeout 50 Delay 0 ProxyUrl http://proxy.company.ru:8080 <Headers> User-Agent : Yandex.Server/3.x From : N/A Accept-Language : ru,*;q=0.1 </Headers> <Authorization> UserName user UserPassword password </Authorization> </HttpOptions> </Webds>
Индексатор начинает свою работу с получения начального списка URL документов, подлежащих индексированию. Поэтому необходимо, чтобы список начальных URL был либо явно задан в ключе StartUrls, либо чтобы присутствовала хотя бы одна из секций IndexedArea или
Один или несколько URL документов, с которых индексатор начинает индексирование. Указывать начальный префикс http:// не обязательно. Если в секциях IndexedArea и директиве DefaultAreaOptions не указано по-другому, будет реализовано следующее поведение по умолчанию. URL других документов, кроме указанных, будут получены в результате распознавания гипертекстовых ссылок в тексте уже проиндексированных документов. Будут проиндексированы только документы из тех же веб-директорий, в которых лежат указанные начальные URL, и документы из поддиректорий этих директорий. Содержимое документов будет получено по протоколу HTTP, кодировка документов будет распознана автоматически. При переиндексировании будут повторно индексироваться только новые и изменившиеся документы, а недоступные (удаленные) документы будут удалены из индекса.
Значение по умолчанию: не задан
Пример 1:
StartUrls www.host.name/Будут проиндексированы все документы сайта http://www.host.name, на которые можно перейти с главной страницы по гипертекстовым ссылкам за один или несколько "кликов". Данная конфигурация полностью эквивалентна следующей (см. IndexedArea):
<IndexedArea> HttpPrefix www.host.name/ </IndexedArea>
Пример 2:
StartUrls www.host.name/docs/doc.htmlБудут проиндексированы все документы в директории http://www.host.name/docs/, на которые можно перейти с документа http://www.host.name/docs/doc.html. Документы, URL-ы которых начинаются не с http://www.host.name/docs/, проиндексированы не будут.
Пример 3:
StartUrls http://www.host.name/news/, www.host.name/conference/conf.htmlБудут проиндексированы документы, URL-ы которых начинаются с http://www.host.name/news/ или с http://www.host.name/conference/, и на которые можно перейти за один или несколько "кликов" хотя бы с одной из страниц http://www.host.name/news/ или http://www.host.name/conference/conf.html.
Задает регулярное выражение. Все документы, URL которых содержит подстроку, удовлетворяющую этому регулярному выражению, будут исключены из индексирования.
Значение по умолчанию: не задан
Примеры:
! Исключать из индексирования файлы _index.html, ! _index.htm, default.html и default.htm Disallow /(_index|default)[.]htm[l]? ! Исключать из индексирования скрипт /lists/showfolder.asp, если ! первым в списке cgi-параметров идет параметр с именем fid Disallow /lists/showfolder.asp[?]fid=.*
Задает регулярное выражение. Будут проиндексированы только те документы, URL которых содержит подстроку, удовлетворяющую этому регулярному выражению.
Значение по умолчанию: не задан
Примеры:
! проиндексировать файлы только из архивов за 1990-1999 годы и ! из каталога archives Allow /(199[0-9]|archive)/ ! проиндексировать файлы только из тех каталогов, имя ! которых состоит из 4-х цифр Allow /([0-9]{4})/
Задает префикс URL по умолчанию, относительно которого может быть задан аргумент директивы HttpPrefix в секциях IndexedArea. Дает возможность задавать относительные URL в секциях IndexedArea.
Значение по умолчанию: http://127.0.0.1/
Пример:
DefaultHttpPrefix myhost.ru
Задает значение по умолчанию, которое будет использоваться в директиве Options в секции IndexedArea. Это же значение задает способ индексирования при использовании директивы StartUrls, если определяемые ею веб-директории не входят в дерево директорий, определенное в секциях IndexedArea. Аргументы этой директивы описаны в разделе Options
Значение по умолчанию: use_content_type update
Пример:
DefaultAreaOptions windows-1251
Конфигурационный файл может включать несколько секций IndexedArea, каждая из которых задает область индексирования. Каждая секция IndexedArea должна включать не более одной директивы HttpPrefix. Дополнительно секция IndexedArea может включать не более одной директивы FilePrefix, не более одной директивы Options и не более одной подсекции HttpOptions, задающей HTTP заголовки, посылаемые web серверу в процессе индексирования этой области.
Cекция IndexedArea может иметь атрибут inherited. Значение атрибута равное no, отменяет наследование значений директив и поисковых атрибутов.
Пример:
<IndexedArea> HttpPrefix http://myhost/mysite/theme1/ Options Set group=theme1 </IndexedArea> <IndexedArea> HttpPrefix http://myhost/mysite/theme1/theme2/ Options Set group=theme2 </IndexedArea>
В приведенной конфигурации, вторая секция наследует значение
theme1поискового атрибута
groupот предыдущей области индексирования.
Чтобы этого не происходило, используйте:
<IndexedArea inherited="no"> HttpPrefix http://myhost/mysite/theme1/theme2/ Options Set group=theme2 </IndexedArea>
Префикс URL документов, абсолютный или относительно пути, заданного в DefaultHttpPrefix. Все документы, имеющие данный префикс, индексируются по правилам, указанным в Options. Если указан относительный путь, изменение директивы DefaultHttpPrefix при переиндексировании не вызывает переиндексирования данной области индексирования.
Пример:
<IndexedArea> HttpPrefix / </IndexedArea>
Локальный путь, соответствующий значению HttpPrefix. Дает возможность получать содержимое документов с помощью чтения файлов. Должен быть указан абсолютный путь или путь относительно рабочей директории индексатора. Обязательно наличие директивы HttpPrefix, либо DefaultHttpPrefix.
Значение по умолчанию: не задан
Пример:
<IndexedArea> HttpPrefix www.myhost.ru/ FilePrefix C:\Inetpub\wwwroot </IndexedArea>
Параметры индексирования документов в данной области индексирования. Параметры индексирования сначала наследуются от области индексирования верхнего уровня, если такая есть, или от значения директивы DefaultAreaOptions, или от значения по умолчанию, а затем дополняются параметрами, указанными в данной директиве. Аргументы этой директивы описаны в разделе Директива Options
Значение по умолчанию: не задан
Пример:
<IndexedArea> HttpPrefix / FilePrefix C:\Inetpub\wwwroot Options windows-1251 </IndexedArea>
В этом разделе описаны аргументы директивы Options, которая может встречаться в секции IndexedArea, а также директивы DefaultAreaOptions из главной секции конфигурационного файла источника. С помощью аргументов директивы Options можно задать следующие параметры областей индексирования.
Считать URL документов регистро-зависимыми, в соответствии со стандартом.
Получать URL документов регистро-независимыми, например, при индексировании документов с веб-серверов под Windows.
Индексировать документы и распознавать гипертекстовые ссылки для получения URL-ов новых документов.
Индексировать документы, но не распознавать гипертекстовые ссылки для получения URL-ов новых документов.
Не индексировать документы, но просматривать их и распознавать находящиеся в них гипертекстовые ссылки для получения URL-ов новых документов.
Учитывать при индексировании содержимое мета тега robots. Подробнее об этом написано в разделе Мета тег robots.
Игнорировать мета тег robots.
Значение по умолчанию: AllowMetaRobots
получать содержимое документов с помощью HTTP-протокола, посылая заголовки, сконфигурированные в секции HttpOptions, имеющей идентификатор configid. Идентификатор configid определяет значение атрибута name секции HttpOptions в текущем конфигурационном файле. Этот аргумент используется только в секции IndexedArea.
При первом индексировании все документы считаются новыми. Рассмотрим повторное индексирование с использованием существующего индекса. Имеющиеся в нем документы будем называть старыми, остальные индексируемые документы - новыми. Старые документы можно разделить на три группы - изменившиеся, неизменившиеся и недоступные. Изменившимся считается документ, текущее время модификации которого больше, чем время модификации во время предыдущего индексирования. Недоступными считаются документы, если попытка получить их содержимое по URL, известному от предыдущего индексирования, заканчивается неудачей. Остальные документы считаются неизменившимися. Старые документы можно удалять из индекса, переиндексировать или оставлять в индексе без переиндексирования. Следующая таблица представляет значения аргументов, задающие каждый из этих режимов.
Тип документа | Индексировать | Не индексировать, оставить | Не индексировать, удалить |
---|---|---|---|
Новый | indnew | skipnew | |
Изменившийся | indmod | skipmod | remmod |
Неизменившийся | indold | skipold | remold |
Недоступный | skipmiss | remmiss |
Для удобства, наиболее часто встречающиеся режимы обновления индекса можно задать с помощью следующих аргументов.
Убирать из индекса данные о недоступных документах и индексировать заново новые и изменившиеся документы, не индексировать неизменившиеся документы. Эквивалентен заданию indnew, indmod, skipold, remmiss.
Убирать из индекса недоступные документы и индексировать заново все существующие, независимо от того, изменились ли они со времени предыдущего индексирования. Эквивалентен заданию indnew, indmod, indold, remmiss.
Индексировать документы в данной области индексирования, но не убирать из индекса недоступные документы. Этот флаг полезен при индексировании временно недоступных документов. Эквивалентен заданию indnew, indmod, skipold, skipmiss.
Убирать из индекса удаленные документы и индексировать заново только новые документы, проиндексированные ранее документы не переиндексировать, даже если время их изменения увеличилось. Эквивалентен заданию indnew, skipmod, skipold, remmiss.
Не индексировать документы из данной области индексирования, убирать из индекса все ранее проиндексированные документы из этой области. Эквивалентен заданию skipnew, remmod, remold, remmiss.
Не индексировать документы из данной области индексирования, но сохранить в индексе ранее проиндексированные документы из этой области. Эквивалентен заданию skipnew, skipmod, skipold, skipmiss.
Значение по умолчанию: Update
При получении содержимого документов через HTTP-соединение можно использовать следующие аргументы.
Не удалять из индекса документы, принадлежащие Веб-серверу, с которым не удалось установить HTTP-соединение. Это более слабый вариант noremove, действующий только для недоступных Веб-серверов.
Удалять из индекса документы, принадлежащие Веб-серверу, с которым не удалось установить HTTP-соединение.
В случае обрыва HTTP-соединения с Веб-сервером пытаться установить его для каждого последующего документа.
В случае обрыва HTTP-соединения с Веб-сервером считать все оставшиеся документы Веб-сервера недоступными.
Значение по умолчанию: RemoveDisconnected, Reconnect
Всегда распознавать кодировку символов автоматически.
В случае документов, получаемых по протоколу HTTP, считать кодировкой документа значение, указанное в заголовке Content-Type. Если заголовок отсутствует или в нем не указана кодировка, распознавать кодировку с помощью анализа текста документа.
Кодировка | Обозначение |
---|---|
WinCyrillic | windows-1251, cp1251 |
MacCyrillic | MacCyrillic, MacRussian |
DOSCyrillic | IBM855 или cp855 |
DOSCyrillicRussian | IBM866, cp866 |
ISOLatinCyrillic | ISO-8859-5, iso-ir-144 |
WinLatin1 | windows-1252, cp1252 |
WinLatin2 | windows-1250, cp1250 |
KOI8R | KOI8-R, csKOI8R |
ISO8859_2 | iso-2, iso_8859-2 |
UTF8 | utf8, utf-8 |
Значение по умолчанию: recognize
Разрешить распознавание границ предложений и абзацев по знакам пунктуации - точкам, пробелам, переводам строк и т.п.
Границами предложений и абзацев считать только теги, разбивающие абзац в языке разметки или заданные в конфигурации парсера. Никакие естественные границы (например, точка+пробел+Большая_буква или два перевода строки и абзацный отступ внутри тега <pre> в HTML) не разбивают предложений и абзацев. Однако следует учитывать, что максимальная длина предложения ограничена, поэтому слишком длинные предложения все равно будут разбиты на несколько частей.
Значение по умолчанию: AllowPunctBreaks
включить область индексирования в раздел
исключить область индексирования из раздела
Указанные аргументы позволяют задать поисковые документные атрибуты типа LITERAL, дополнительно к атрибутам, назначаемым парсером документного формата во время индексирования документа. Использование данных аргументов позволяет включить документы в определенные тематические разделы на основании структуры веб-директорий, в которых находятся документы. Альтернативно, во время индексирования документы могут получить поисковые документные атрибуты в соответствии с их содержанием. См. обсуждение в разделе Документы, зоны и атрибуты.
Строка имя=значение не должна включать пробелы. Чтобы удалить для данной области индексирования все унаследованные атрибуты, используйте атрибут inherited секции IndexedArea.
Пример:
<IndexedArea inherited="no">
При обращении к Веб серверу индексатор передает ему HTTP-запрос, который по умолчанию выглядит следующим образом:
GET _относительный_урл_документа_ HTTP/1.1 Host: _имя_хоста_с_которого_запрашивается_документ_ Connection: Keep-Alive From: N/A User-Agent: Yandex.Server/_номер_версии_Yandex.Server_ Accept: text/html _или_ text/plain Accept-Language: ru; q=1.0, *; q=0.01 If-Modified-Since: _дата_модификации_при_последнем_индексировании_Последний заголовок посылается при повторном индексировании, если документ уже был проиндексирован ранее, а в опциях настройки источника указано "переиндексировать, только если документ изменился".
Иногда требуется модифицировать посылаемые по умолчанию заголовки, или добавить новые заголовки. Так, например, для сайтов, требующих авторизации, HTTP-запрос должен содержать дополнительную информацию о полномочиях пользователя. Также бывает нужно использовать прокси-сервер или установить время задержки между запросами, чтобы не загружать веб-сервер.
Имеется гибкий механизм настройки HTTP-запросов. Эта настройка может быть различной для разных областей индексирования. Каждая настройка запоминается либо в секции <HttpOptions> конфигурационного файла источника и имеет идентифицирующий атрибут name, либо задается как подсекция <IndexedArea>. Значение атрибута name указывается для каждой области индексирования в директиве Options секций IndexedArea конфигурационного файла источника.
Секция <HttpOptions> состоит из необязательных директив Timeout, Delay и ProxyUrl и двух необязательных секций Headers и Authorization.
Максимальное время ожидания ответа Web-сервера в секундах.
Значение по умолчанию: 150
Время задержки перед запросом следующего документа в микросекундах. Директива необходима для уменьшения нагрузки на сервер, время индексирования при этом, естественно, увеличивается.
Значение по умолчанию: 0
Позволяет использовать в HTTP-запросе указанный прокси-сервер. Директива должна определять полный URL прокси-сервера, начинающийся с http, и содержащий номер порта, если он отличается от 80. Если указан прокси-сервер, запрос
GET _относительный_урл_документа_ HTTP/1.1 Host: _имя_хоста_с_которого_запрашивается_документ_будет заменен на
GET _абсолютный_урл_документа_ HTTP/1.1и HTTP-соединение будет устанавливаться с прокси-сервером, а не хостом, на котором расположен документ. Прокси-серверы, требующие отдельной авторизации со стороны пользователя, не поддерживаются в данной версии.
Значение по умолчанию: не задан
Позволяет задавать любые HTTP-заголовки в формате
Имя: ЗначениеВ этом примере будет добавлен HTTP-заголовок с именем Имя и значением Значение.
Правила хорошего тона при индексировании независимых ресурсов требуют задания HTTP-заголовков User-Agent, который содержит идентифицирующую информацию о программе-клиенте, пославшей запрос, и From, который должен содержать email-адрес администратора программы-клиента в формате, определенном в RFC 822. Если ключи User-Agent и/или From отсутствуют, будут посланы заголовки по умолчанию, указанные выше.
Кроме того, всегда будут посланы заголовки Connection и, если необходимо, If-Modified-Since, поэтому их не следует указывать в данной секции.
Носит вспомогательный характер и позволяет удобным способом добавлять HTTP-заголовок Authorization, обеспечивающий проверку полномочий клиента на доступ к данным по схеме BASIC. В секцию входят следующие директивы:
Имя и пароль кодируются по base64. Например, комбинация следующих ключей в секции Authorization
<Authorization> UserName: yandex UserPassword: asdf12345 </Authorization>эквивалентна заданию директивы
<Headers> Authorization: Basic eXNpdGU6YXNkZjEyMzQ1 </Headers>в секции Headers и приведет к включению соответствующего HTTP-заголовка.
Пример 4-5. Конфигурация HTTP-запросов
Ниже приведен отрывок из конфигурационного файла источника, задающий конфигурацию HTTP-запросов при индексировании хоста www.host.ru.
<IndexedArea> HttpPrefix www.host.ru Options GetHttp:myhttp </IndexedArea> <HttpOptions name="myhttp"> Timeout: 150 Delay: 0 ProxyUrl: http://proxy.host.ru:8080 <Authorization> UserName: yandex UserPassword: asdf12345 </Authorization> <Headers> User-Agent: Yandex.Server.MyHost/3.0 From: admin@host.ru Accept-Language: ru, *;q=0.1 MyHeader: TestStroka </Headers> </HttpOptions>
Пример 4-6. Настройка области индексрования
<webds> ! Индексируемый каталог <IndexedArea> HttpPrefix www.company.ru </IndexedArea> </webds>
Часто встречаются ситуации, когда необходимо исключить из индексирования не весь документ целиком, а только его часть. Добиться этого можно, немного подправив HTML-код страницы. Весь текст, размещенный между тегами <NOINDEX> и </NOINDEX>, будет исключен из индексирования. Использование этих тегов никак не отразится на внешнем виде Web-страницы, т.к. они не являются стандартными для языка HTML и будут просто проигнорированы браузером.
При индексировании документов по протоколу HTTP Яndex.Server 3.8 Free Edition поддерживает стандарт исключений для роботов. В соответствии с этим стандартом, правила, управляющие поведением поискового робота, должны располагаться в файле /robots.txt, лежащем в корне Web-сервера.
Детальное описание спецификации файла можно прочитать, например, по адресу: http://www.citforum.ru/internet/search/rbtspec.shtml.
В простейшем виде (разрешено все, кроме директории скриптов) файл robots.txt выглядит следующим образом:
User-Agent: * Disallow: /cgi-bin/
Если нужно, чтобы Яndex.Server 3.8 Free Edition при индексировании вашего сайта не учитывал общие правила для поисковых роботов, модифицируйте robots.txt, добавив специальное правило для User-Agent, заданного при конфигурировании HTTP-запросов. Например, в следующем примере директория скриптов закрывается от всех роботов, кроме робота MyYandexServer, которому открыто все
User-Agent: * Disallow: /cgi-bin/ User-Agent: MyYandexServer Disallow:
При написании robots.txt обратите внимание на следующие часто встречающиеся ошибки.
Строка с полем User-Agent является обязательной и должна предшествовать строкам с полем Disallow. Так, приведенный ниже файл robots.txt не запрещает ничего:
Disallow: /cgi-bin Disallow: /forum
Пустые строки в файле robots.txt являются значимыми, они разделяют записи, относящиеся к разным роботам. Например, в следующем фрагменте файла robots.txt строка "Disallow: /forum" игнорируется, поскольку перед ней нет строки с полем User-Agent.
User-Agent: * Disallow: /cgi-bin Disallow: /forum
Строка с полем Disallow может запретить индексирование документов только с одним префиксом. Для запрета нескольких префиксов нужно написать несколько строк. Например, нижеприведенный файл запрещает индексирование документов, начинающихся с "/cgi-bin /forum", которых, скорее всего, не существует (а не документов с префиксами "/cgi-bin" и "/forum").
User-Agent: * Disallow: /cgi-bin /forum
В строках с полем Disallow записываются неабсолютные, а относительные префиксы. То есть файл:
User-Agent: * Disalow: www.myhost.ru/cgi-binзапрещает, например, индексирование документа http://www.myhost.ru/www.myhost.ru/cgi-bin/counter.cgi, но НЕ запрещает индексирование документа http://www.myhost.ru/cgi-bin/counter.cgi
В строках с полем Disallow указываются именно префиксы, а не что-нибудь еще. Так, файл:
User-Agent: * Disallow: *запрещает индексирование документов, начинающихся с символа * (которых в природе не существует), и сильно отличается от файла:
User-Agent: * Disallow: /который запрещает индексирование всего сайта.
При индексировании html-документов Яndex.Server 3.8 Free Edition учитывает содержимое мета тега robots, что позволяет запретить роботу индексировать какую-то страницу или следовать по ссылкам, содержащимся на ней.
Значение этого тега может состоять из следующих директив, разделенных запятыми:
Директива | Назначение |
---|---|
index | страница может быть проиндексирована |
noindex | страница не должна индексироваться |
follow | следовать по ссылкам, содержащимся на странице |
nofollow | не следовать по ссылкам, содержащимся на странице |
all | index,follow (по умолчанию) |
none | noindex,nofollow |
Пример 1. Не индексировать страницу, но собрать с нее все ссылки на другие страницы:
<meta name="robots" content="noindex,follow">
Пример 2. Проиндексировать страницу, но не следовать по ссылкам, расположенным на ней:
<meta name="robots" content="index,nofollow">
Пример 3. Не индексировать страницу и не следовать по ссылкам, расположенным на ней:
<meta name="robots" content="noindex,nofollow">
Мета тег robots имеет более высокий приоритет, чем настройки индексатора или директивы управления, заданные в файле robots.txt. Т.е., если например директивы управления в файле robots.txt разрешают индексировать все файлы в каталоге, то блокирующий мета тег <meta name="robots" content="noindex,nofollow"> может запретить индексирование страницы, находящейся в этом каталоге.
Важно: Нельзя указывать повторяющиеся или конфликтующие директивы, например:
<meta name="robots" content="index,noindex,nofollow,follow,follow">
Если вы не хотите учитывать мета тег robots, задайте в настройках директиву Options со значением IgnoreMetaRobots.
Пред. | Начало | След. |
Индексирование файловых директорий | Уровень выше | Парсеры (анализаторы содержимого документа) |