ВебмастерМетрикаВиджетыРекламная сетьДиректПоиск для сайтаAPI
Войти

Руководство по установке и эксплуатации

В формате PDF

Поиск в зонах и атрибутах

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

Ниже в качестве имени зоны мы будем использовать zone, а в качестве имени атрибута — attr. Вместо zone и attr следует подставить одно из действительных значений.

Пример

В веб-поиске Яндекса (www.yandex.ru) можно использовать title или anchor вместо zone и link, image или date вместо attr.

Операторы зонно-атрибутивного поиска могут составлять подзапрос более сложного запроса. В этом случае они комбинируются с другими частями запроса с помощью операторов языка запросов, описанных в разделе Основные операторы.

Синтаксические правила зонно-атрибутивного поиска

  • zone:слово - ищет слово в зонах с именем zone. Токен (слово) не может содержать пробелы.

Пример

Найти документы, в тексте которых встречается слово ошибка, но это слово не встречается в тексте ссылок на другие документы:

ошибка ~~ anchor:ошибка

  • zone:(текст-в-зоне) - ищет текст-в-зоне в зонах с именем zone. В подзапросе текст-в-зоне могут употребляться любые языковые конструкции, описанные ранее, в частности, он может состоять из нескольких слов.
  • zone:"текст-в-зоне"
  • zone:’текст-в-зоне’
  • zone:‘текст-в-зоне‘ - ищет запрос в кавычках "текст-в-зоне" (то есть точные формы подряд идущих слов) в зонах с именем zone.
  • zone:((текст-в-зоне)) В отличие от варианта с одной парой скобок, ищет текст-в-зоне целиком в одной зоне с именем zone. Имеет смысл, когда в документе есть несколько разных одноименных зон, а текст-в-зоне состоит из нескольких слов.
  • attr:значение
  • attr:"значение"
  • attr:’значение’
  • attr:‘значение‘
  • attr:(значение) - все формы записи эквивалентны, за исключением того, что в первом случае значение не может включать пробелы.

    Ищет документы, в которых существуют зоны (в том числе документ как целое и зона нулевой длины), имеющие атрибут с именем attr и значением значение. Возможный формат значения зависит от типа атрибута, подробности описаны в разделе Типизация поисковых атрибутов.

    Для всех типов атрибутов, кроме логических, возможно указывать операторы сравнения >, >=, <, <= после двоеточия: date:<20090101 или size:>=1024

Пример

Найти документы, в которых есть картинки, расположенные в файле apple.gif:

image:apple.gif

В этом примере использован атрибут специальной зоны нулевой длины.

Пример

Найти документы, созданные 14 мая 1999 года:

date:19990514

В этом примере использован документный атрибут.

Пример

Найти все документы, которые ссылаются на сайт www.site.ru:

link:www.site.ru/*

В этом примере использован атрибут зоны anchor.

Таким образом, поиск документов с зонным атрибутом, встречающимся где угодно в тексте, ничем синтаксически и по смыслу не отличается от поиска по документным атрибутам.

Однако зонные атрибуты (в том числе и атрибуты пустой зоны) отличаются от документных тем, что имеют координатную привязку к тексту документа. То есть для поисковой системы это такие же объекты для поиска, как и слова, и они могут участвовать во всех допустимых операциях с заданным поисковым контекстом.

Пример

Найти все документы, в которых картинки из файла apple.gif находятся рядом со словом яблоко:

image:apple.gif &/1 яблоко

  • zone:(attr:значение текст) - ищет текст в зонах с именем zone, имеющих атрибут с именем attr и значением значение. В подзапросе текст могут употребляться любые языковые конструкции, описанные ранее, в том числе и другие атрибуты. Отличие атрибута, стоящего на первом месте, в том, что он привязан к указанной зоне.

Пример

Найти документы, которые ссылаются на сайт www.site.ru словами мягкая мебель:

anchor:(link:www.site.ru/* мягкая мебель)

Типизация поисковых атрибутов

Поисковые атрибуты различаются по способам распознавания и обработки. В зависимости от типа возможны также некоторые вариации синтаксиса задания значения атрибута.

Встроенные зоны и атрибуты
Несколько зон и атрибутов изначально встроены в язык запросов и имеют зарезервированные имена.
  • intext - специальное имя зоны для поиска только в текстах документов.
  • inlink - специальное имя зоны для поиска только в ссылках на документы.
  • softness - специальное имя атрибута для указания мягкости многоместного оператора AND верхнего уровня. Имеет синтаксис softness:N, где N - целое число от 0 до 100 включительно. Следует задавать не более одного softness-атрибута в запросе, так как будет использовано только последнее заданное значение.
  • prevreq - специальное имя атрибута для указания идентификатора предварительно сохраненного запроса. Имеет синтаксис prevreq:ID, где ID может содержать буквы и цифры, а также может быть отрицательным целым числом.
  • inpos - специальное имя атрибута для указания точного диапазона позиций, в которых должен находиться предыдущий лист или скобка. Имеет синтаксис inpos:N1..N2, где N1 и N2 — целые положительные числа.
Литеральные атрибуты

Значение атрибута распознается как неделимая последовательность символов, участвующая в индексировании и поиске как целое. Может быть документным или зонным.

Возможен поиск по префиксу, в этом случае значение атрибута (требуемый префикс) должно заканчиваться звездочкой (*).

Даты

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

Поддерживаются несколько вариантов задания даты: YYYYMMDD, или YYYY-MM-DD, или YYYY-MM-DDTHH:MM:SS. В первом варианте можно использовать символ * для поиска диапазона, в последнем можно не задавать секунды или секунды и минуты, в этом случае поиск также будет выполнен по диапазону.

Поддерживается также интервальный поиск: date:20080101..20080212

Пример

date:20080119 — найти документы, созданные 19 января 2008 года

date:2008* — найти документы, созданные в 2008 году

date:2009-01-19T19:23:45 - найти документы, созданные 19 января 2008 года в 19 часов 23 минуты 45 секунд, тот же результат достигается запросом date:20090119 inpos:69825..69826

date:2009-01-19T19:23 преобразуется в date:2009-01-19 inpos:69780..69840

date:2009-01-19T19 преобразуется в date:2009-01-19 inpos:68400..72000

URL

Значение атрибута распознается как Uniform Resource Locator.

Значения атрибутов данного типа имеют дополнительную обработку: из них удаляется протокол - http:// или https://, а также все русские символы преобразуются в utf-8 и кодируются в соответствии с RFC1738.

Пример

url:http://ru.wikipedia.org/wiki/Уткин_Иосиф_Павлович работает как url:ru.wikipedia.org/wiki/%D0%A3%D1%82%D0%BA%D0%B8%D0%BD_%D0%98%D0%BE%D1%81%D0%B8%D1%84_%D0%9F%D0%B0%D0%B2%D0%BB%D0%BE%D0%B2%D0%B8%D1%87 (Искусственный перевод строки в действительности отсутствует.)

url:https://www.telebank.ru/web/front/login.x работает как url:www.telebank.ru/web/front/login.x

Целочисленные атрибуты

Значение атрибута распознается как целое десятичное число.

Поддерживается также интервальный поиск: cat:100004..1000010

Пример

cat:100004, size:200

Запрос size:0xFFFF будет обработан как запрос size 0xFFFF из двух слов.

Логические атрибуты

В качестве значений атрибута могут использоваться:

1/0, true/false, yes/no, on/off

Пример

new:yes, cyrillic:false

Конфигурирование

Для каждой коллекции документов в конфигурационном файле может быть задан список зон и атрибутов. Секция Collection может содержать одну подсекцию QueryLanguage.

В секции QueryLanguage указываются зоны и атрибуты в формате имя: тип.

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

При неверном указании типа будет выдано сообщение об ошибке и данный атрибут будет пропущен. Поддерживаемые типы: ZONE, ATTR_LITERAL, ATTR_INTEGER, ATTR_URL, ATTR_DATE, ATTR_BOOLEAN. Названия типов могут быть заданы в любом регистре.

Пример

<Collection id="work">
  IndexDir /yandex/db/workindex/

  <QueryLanguage>
    title    : ZONE
    address  : ZONE
    anchor   : ZONE
    mime     : ATTR\_LITERAL
    cat      : ATTR\_INTEGER 
    url      : ATTR\_URL 
    date     : ATTR\_DATE
    new      : ATTR\_BOOLEAN
    cyrillic : ATTR\_BOOLEAN
  </QueryLanguage>

</Collection>     

Зоны и атрибуты по умолчанию

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

  • Зоны: title, address, anchor, anchorint, anchormus, quote, del, ins
  • Литеральные: charset, language, robots, style, profile, script, image, applet, object, action, domain, host, hostip, lang, mime, rhost, upath, whois
  • URL: base, refresh, link, linkint, linkmus, url
  • Даты: date, idate
  • Логические: cyrillic, new
  • Целочисленные: cat, size

Сравнение с синтаксисом версии 3.10.8

Версия 3.10.8 Новая версия
a|b&&c a | b && c
(!a | !A) /+1 !b "a * b"
title[слово] title:слово
title[слово]$$$ title–>слово
keyword=(слово) не поддерживается
date="20080101" date:20080101
[[date="20060514"„60„120]] date:20060514 inpos:60..120
size<="1024" size:<=1024
anchor#link="www.site.ru/*" [мебель] anchor:(link:www.site.ru/* мягкая мебель)