ТЕЛЕКОММУНИКАЦИИ

А.И. Сенокосов

Бороться и искать, найти!

Продолжение. Начало см. № 3/2006

Часть 2. Особенности национальных поисковых машин

Первая часть статьи была посвящена основным принципам функционирования поисковых серверов в Интернете. Напомним, что большинство поисковых серверов проводят тотальный просмотр всего Интернета и составляют базу данных, в которую заносятся найденные на страницах слова и словосочетания. Естественно, зная язык запросов, можно наиболее эффективно использовать такую базу. Рассмотрим более подробно языки запросов, используемые в двух наиболее популярных российских поисковых машинах.

Яndex

Общие принципы

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

Но имеется возможность поиска и по точной словоформе. Для этого перед словоформой надо поставить восклицательный знак “!”.

Так, по запросу !статьи по базам данных будут найдены все документы, содержащие словоформу статьи, а не статья, статьях и т.п. Что же касается остальных слов, то “по” будет просто-напросто проигнорировано, а слова “базам” и “данных” могут присутствовать в любой форме.

К регистру символов Яндекс подходит интеллектуально. Если вы набрали в запросе слово с большой буквы, будут найдены только слова с большой буквы (если это слово не первое в предложении), в противном случае будут найдены как слова с большой, так и с маленькой буквы.

Например, запрос Информатика найдет более 3 миллионов страниц, в которых есть самые различные словоформы, написанные как с большой буквы, так и с маленькой. Конечно, среди них будет и ссылка на нашу любимую газету, но гораздо правильнее будет составить запрос из двух слов газета Информатика. Количество страниц уменьшится примерно до 27 тысяч, причем на первых страницах почти все ссылки так или иначе связаны с нашей газетой. Поиск по словосочетанию газета информатика, как и обещано разработчиками Яндекса, добавляет примерно 4 тысячи страниц к найденным предыдущим запросом. Так что пользователям этой поисковой системы лучше не лениться и при составлении запроса использовать большие и маленькие буквы.

Не забудем и про знаки “+” и “–”. Если вы хотите, чтобы слова из запроса обязательно были найдены, поставьте перед каждым из них “+”. Если вы хотите исключить какие-либо слова из результата поиска, поставьте перед каждым из них “–”.

Например, запрос форум учителей информатики выдаст более 120 тысяч ссылок на сайты с разнообразными форумами, а также те, где есть упоминание учителей и информатики. Ничуть не улучшает положения и запрос форум+учителей +информатики, поскольку как раз большая часть из найденных в предыдущем примере страниц содержала слова “учитель” и “информатики”. А вот запрос +форум+учителей+информатики оставит всего лишь чуть больше двух тысяч ссылок, которые точно связаны с искомыми форумами учителей информатики.

Смертельный аттракцион с запросом компьютер выдаст более 57 миллионов ссылок, но стоит написать компьютер –продажа, как количество ссылок уменьшается чуть ли не в пятьсот раз! (Это именно минус, а не тире и не дефис. Знак “–” надо писать через пробел от предыдущего и слитно с последующим словом.)

Специальные символы “|”, “~”, “&”

Между словами можно поставить знак “|”, чтобы найти документы, содержащие любое из слов, входящих в запрос. Это удобно при поиске синонимов.

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

Знак тильда “~” позволит найти документы с предложением, содержащим первое слово, но не содержащим второе.

По запросу банки ~ закон будут найдены все документы, содержащие слово “банки”, рядом с которым (в пределах предложения) нет слова “закон”.

Чтобы подняться на ступеньку выше, от уровня предложения до уровня документа, просто удвойте соответствующий знак. Одинарный оператор (&, ~) ищет в пределах предложения, двойной (&&, ~~) — в пределах документа.

Например, по запросу рецепты && (плавленый сыр) будут найдены документы, в которых есть и слово “рецепты”, и словосочетание “плавленый сыр”, причем “плавленый сыр” должно быть в одном предложении. А запрос руководство Visual C ~~ цена выдаст все документы со словами “руководство Visual C”, но без слова “цена”.

Кавычки

Часто в запросах ищут устойчивые словосочетания. Если поставить их в кавычки, то будут найдены те документы, в которых эти слова идут строго подряд.

Например, по запросу красная шапочка будут найдены документы с этой фразой. (При этом контекст “а шапочка у нее была красная” найден не будет.) К сожалению, будет найдена ссылка и на портал “Красной плесени”, и на сайт ночного клуба города Москвы, и на многочисленные книжные магазины и еще более полумиллиона других ссылок, среди которых найти именно то, что нужно (предполагается, что нам нужен был текст самой сказки), очень даже непросто. Поэтому правильным решением было бы послать вот такой запрос: “текст сказки” “Красная Шапочка”. Уже седьмая найденная ссылка содержит полный текст сказки в классическом переводе.

Знак “/”

Как Яndex адресует слова? Если все слова в тексте перенумеровать по порядку их следования, то расстояние между словами a и b — это разница между номерами слов a и b. Таким образом, расстояние между соседними словами равно 1 (а не 0), а расстояние между соседними словами, стоящими “не в том порядке”, равно –1. То же самое относится и к предложениям.

Если между двумя словами поставлен знак “/”, за которым сразу напечатано число, значит, требуется, чтобы расстояние между ними не превышало этого числа слов.

Например, задав запрос поставщики /2 кофе, вы требуете найти документы, в которых содержатся и слово “поставщики”, и слово “кофе”, причем расстояние между ними должно быть не более двух слов и они должны находиться в одном предложении. (Найдутся “поставщики колумбийского кофе”, “поставщики кофе из Колумбии” и т.д.)

Если порядок слов и расстояние точно известны, можно явно указать знаки “+” или “–”. Так, например, задается поиск слов, стоящих подряд.

Запрос синяя /+1 борода означает, что слово “борода” должно следовать непосредственно за словом “синяя”. (К тому же результату, кстати, приведет запрос синяя борода.)

В общем виде ограничение по расстоянию задается при помощи конструкции вида “/(n m)”, где n — минимальное, а m — максимально допустимое расстояние. Отсюда следует, что запись “/n” эквивалентна “/(–n +n)”, а запись “/+n” эквивалентна “(+n +n)”.

Запрос музыкальное /(–2 4) образование означает, что “музыкальное” должна находиться от “образование” в интервале расстояний от 2 слов слева до 4 слов справа.

Практически все знаки можно комбинировать с ограничением расстояния.

Например, результатом поиска по запросу вакансии ~ /+1 студентов будут документы, содержащие слово “вакансии”, причем в этих документах слово “студентов” не следует непосредственно за словом “вакансии”.

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

Запрос банк && /1 налоги означает, что слово “налоги” должно находиться в том же самом либо в соседнем со словом “банк” предложении.

Скобки

Вместо одного слова в запросе можно подставить целое выражение. Для этого его надо взять в скобки.

Например, запрос (история, разработка) /2 (компьютер, ЭВМ) задает поиск документов, которые содержат любую из фраз “история компьютеров”, “разработка ЭВМ”, “история ЭВМ”, “разработка компьютеров”. Этот поиск приводит нас к нескольким интересным сайтам, посвященным истории развития вычислительной техники.

“Изыски”

В языке запросов Яндекса имеется значительное количество поисковых инструментов, предназначенных для сетевых следопытов-профессионалов. В частности, можно искать и в так называемых “зонах” — заголовках документов, адресах и т.д. (в данном случае “зоны” — понятие не географическое), и даже в отдельных тегах.

“Минимальная” страница

В заключение краткого рассказа о Яндексе отметим, что имеется замечательная страница www.ya.ru, на которой нет ничего (!), кроме формы запроса, — ни реклам, ни картинок, ни дополнительной информации. Загружается эта страница мгновенно.

Рамблер

Учителям информатики, конечно, не надо объяснять, что такое синтаксис. Равно как и то, что семантически (по смыслу) эквивалентные конструкции могут записываться по-разному. Не стали исключением и языки запросов Яндекса и Рамблера, хотя, по своей сути, они имеют дело с практически одинаковыми базами данных. Итак, рассмотрим более подробно язык поисковых запросов второго крупнейшего российского сервера.

Общие положения

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

Регистр

В общем случае регистр написания поисковых слов и операторов значения не имеет, то есть дом и ДОМ, Notebook и nOteBook воспринимаются одинаково. И лишь иногда, в целях повышения качества поиска, регистр слов поискового запроса принимается во внимание.

Например, если запрос состоит из двух, трех или четырех слов, каждое из которых написано с большой буквы, то предполагается поиск по имени собственному, и автоматически производится изменение ограничения расстояния между словами запроса со значения по умолчанию на величину (n–1)*2, где n — количество слов запроса. Это позволяет находить группу слов запроса, внутри которой есть не более одного “лишнего” слова или знака препинания, например, Баден-Баден, А. Пушкин, Федор Михайлович Достоевский.

Морфология

По каждому слову запроса поиск ведется с учетом правил словоизменения соответствующего языка. Рамблер понимает и различает слова русского и английского языков — по умолчанию, поиск ведется по всем формам слова.

Чтобы провести поиск только по одной определенной форме слова, нужно взять ее в двойные кавычки или воспользоваться поиском точной фразы в расширенном поиске.

Стоп-слова

Некоторые слова и символы по умолчанию исключаются из запроса в связи с их малой информативностью. Это так называемые “стоп-слова” — самые частотные слова русского и английского языков, например, предлоги, частицы и артикли. Присутствие этих слов может замедлить поиск и негативно повлиять на полноту результатов. Есть возможность обозначить необходимость этих слов в запросе, взяв запрос в двойные кавычки или воспользовавшись поиском точной фразы в расширенном поиске. С аналогичным мы сталкивались и в Яндексе, когда искали статьи по базам данных. В частности, запрос “в лоб” Учебное ПО (имеется в виду, что мы хотим найти учебное программное обеспечение) обречен на неудачу — мы получим “Учебное пособие по стоматологии”, “Учебное пособие по 150 рублей”, “Учебный центр по вождению автомобилей” и т.п. Правда, в отличие от Яндекса Рамблер не проигнорирует слово “по”. Как легко понять, в Яндексе поиск по такому запросу будет еще более бесполезным.

Операторы

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

Два запроса, соединенные оператором AND (логическое И), образуют сложный запрос, которому удовлетворяют только те документы, которые одновременно удовлетворяют обоим этим запросам. Иными словами, по запросу собака AND кошка найдутся только те документы, которые содержат и слово “собака”, и слово “кошка”.

(В частности, что касается этого примера. Запрос cобака выдает более 200 тысяч сайтов, cобака кошка — уже 67 тысяч. Жесткий же запрос собака AND кошка — всего лишь чуть больше полутысячи.)

Сложному запросу, состоящему из двух запросов, соединенных оператором OR (логическое ИЛИ), удовлетворяют все документы, удовлетворяющие хотя бы одному из этих двух запросов. По запросу собака OR кошка найдутся документы, в которых есть хотя бы одно из слов “собака” или “кошка” (либо оба эти слова вместе). Соответственно, было получено более 250 тысяч ссылок на различные сайты.

Оператор NOT (обратите внимание на то, что в данном случае речь идет о бинарном операторе И-НЕ) образует запрос, которому отвечают документы, удовлетворяющие левой части запроса и не удовлетворяющие правой. Так, результатом поиска по запросу собака NOT кошка будут все документы, в которых есть слово “собака” и нет слова “кошка” (около 180 тысяч сайтов).

Если оператор явно не указан, используется оператор по умолчанию AND: находятся только документы, содержащие все слова запроса. Так, запрос информация технологии кредит будет истолкован как информация AND технологии AND кредит. На странице расширенного поиска оператор по умолчанию можно заменить на OR.

Каждый из операторов имеет сокращенное обозначение: AND — “&”, OR — “|”, NOT — “!”.

Запрос из нескольких слов, перемежающихся операторами, будет истолкован в соответствии с их приоритетом. Операторы AND и NOT традиционно имеют более высокий приоритет, поэтому запрос из нескольких слов при обработке сначала группируется по операторам AND и NOT, и лишь потом по операторам OR. Изменить порядок группировки можно использованием скобок. Заметим, что вышеупомянутая “толерантность” к регистру вовсе не распространяется на операторы. Они должны быть написаны только БОЛЬШИМИ БУКВАМИ!

Кавычки

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

Таким образом, двойные кавычки можно использовать и просто для поиска слова в заданной форме (по умолчанию слова находятся во всех формах). Например, запросу самолет “заправился” посадка удовлетворяет документ, содержащий текст “...самолет совершил посадку и заправился...”, и не удовлетворяет документ, содержащий “…самолет совершил посадку, чтобы заправиться...”.

Скобки

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

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

Если запрос без скобок машина самолет | аэродром эквивалентен запросу машина AND самолет OR аэродром и, в соответствии с приоритетами операторов, означает найти документы, содержащие либо слова “машина” и “самолет”, либо слово “аэродром”, то запрос со скобками машина (самолет | аэродром) равносилен запросу машина AND (самолет OR аэродром), что означает найти документы, содержащие слово “машина” и одно из слов “самолет” или “аэродром”.

Метасимволы

Рамблер пока не поддерживает поиск строк с использованием метасимволов (“*”, “?”), которые обычно используются в значении “любая подстрока” и “произвольный одиночный символ” соответственно. Тем не менее эти операторы зарезервированы для подобного использования в будущем.

Ограничение расстояния

Если запрос составлен из одного или нескольких слов без применения операторов и конструкций языка запросов, то будут найдены документы, в которых встречаются все слова запроса. При этом для каждого запроса всегда существует так называемое “ограничение контекста” — положительное число, по умолчанию равное расстоянию в 40 слов. Документ, в котором встретились все слова запроса, будет выдан только в том случае, если расстояние в словах между вхождениями слов запроса будет меньше этого числа. Например, по запросу красная армия будут найдены те документы, в которых слова “красная” и “армия” хотя бы один раз встретятся менее чем в 40 словах друг от друга.

Значение ограничения контекста можно изменять конструкцией (число, запрос), где число — любое положительное число, запрос — любой корректный с точки зрения поисковой машины запрос, состоящий более чем из одного слова (очевидно, ограничение расстояния между словами в случае однословного запроса не имеет смысла). По запросу (2, красная армия) найдутся только те документы, в которых между словами “красная” и “армия” хотя бы раз не стоит ни одного слова (поскольку лишь в случае их непосредственного соседства разница в порядковых номерах слов меньше 2, т.е. равна 1, — с аналогичным мы сталкиваемся и в Яндексе).

Ненайденные слова

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

“Минимальная” страница

Как и у Яндекса, у Рамблера имеется облегченная страница с формой для поиска. Она расположена по адресу www.r0.ru.

Использованные источники информации

1. Описание языка запросов Яндекса (www.yandex.ru).

2. Описание языка запросов Рамблера (www.rambler.ru).

Продолжение следует

TopList