Яндекс для всех
Шрифт:
Разбиение документа на зоны происходит во время индексирования на основании меток, возвращаемых парсером. Впоследствии каждая зона может стать объектом независимого поиска (вспомните то, что мы уже говорили про поиск — поиск по заголовкам документов, заголовкам писем, адресатам, тегам и т. д.). Каждая поисковая зона имеет точки начала и конца в теле документа. Начало и конец зон всегда приходятся на границы слов.
Индексирование с учетом зон и их характеристик обеспечивает в дальнейшем возможность поиска с учетом нахождения требуемых сведений в определенных зонах. Это очень хорошо заметно на примере языка запросов, о котором
10.1.2. Как группируются результаты
У документа, помимо данных, используемых для организации поиска, существуют дополнительные атрибуты. К ним можно отнести размер документа и время его создания, тип документа и принадлежность к определенному разделу сайта. Эти характеристики используются для сортировки и группировки результатов поиска. Значения этих атрибутов хранятся в специальном дополнительном файле и могут быть изменены без переиндексирования, но обязательно до начала выполнения поиска.
При формировании ответа на запрос всегда происходит выстраивание списка найденных документов. По умолчанию ранжирование выполняется по значению релевантности запросу. Однако бывает необходимо выполнить сортировку по дополнительным признакам, например, по типам документов или по датам. В этом случае сортировка будет выполняться по группировочным атрибутам. Например, новости можно сгруппировать по изданиям, опубликовавшим их, а документы — по разделу сайта, где они размещаются. Ограничение, накладываемое на группирование результатов, заключается в том, что группирование не может быть вложенным (т. е. нельзя сгруппировать уже сгруппированный список).
Однако для одного поискового запроса можно задать сразу несколько группировок, или вариантов структурирования результата. То есть можно получить не один "список найденного", а несколько, и каждый список будет соответствовать одной группировке. При этом способ сортировки результата поиска для всех вариантов может быть только один.
Для выполнения группировки или сортировки результатов в поле запроса требуется добавить определенные параметры, описанные в табл. 10.1.
Полей g может быть несколько — по числу необходимых группировок. Поле g имеет структуру mode.attr.ngrp.ndoc.cur, описанную в табл. 10.2. Необходимо помнить, что по умолчанию при выполнении запроса не делается никаких группировок. Для того чтобы получить ту или иную группировку, необходимо задать поле g. Группировка и сортировка происходят на этапе выполнения запроса, поэтому нельзя использовать функции работы с группами при построении выдачи, если до выполнения поиска не были заданы соответствующие поля.
Поле fa служит для фильтрации найденных документов по значениям указанных группировочных атрибутов. Такая фильтрация выполняется после выполнения поискового запроса, но до начала выполнения группировок. Использование поля fa для фильтрации результатов поиска по группировочным атрибутам предпочтительнее, чем использование поисковых атрибутов в поисковом запросе (если в
fa=price:40–50
fa=f:1-20;d:-30;t:40-
Все описанные здесь параметры могут быть использованы при разработке собственной страницы задания условий расширенного поиска. Но эта возможность доступна только в платной версии.
10.1.3. Язык запросов
Язык запросов, используемый в Яndex.Server, в полной мере соответствует языку запросов, с которым работает поисковая система Яндекс. Поэтому все, что можно использовать для поиска в Интернете, новостях, среди картинок, поддерживается и в версии программы, предназначенной для установки на сайте. Такой подход удобен для пользователей — если он знаком с возможностями формирования запросов на Яндексе, то без проблем сможет искать информацию и на вашем сайте.
Задавать вопросы можно и на естественном языке, и используя логические операторы (расширенные возможности Яндекса). Часть расширенных возможностей реализована в виде поисковой страницы, на которую можно перейти по ссылке Расширенный поиск.
С заданием запросов на естественном языке справится любой, поэтому здесь остановимся кратко на использовании логических операторов, позволяющих в одном запросе задать несколько условий поиска. Такой вариант удобен, когда есть возможность выделить для запроса ключевые слова, определить возможные синонимы, задать слова, которые не должны попадать в результаты.
Языковый модуль, входящий в состав программы, обеспечивает поиск всех форм заданного слова. Но если требуется найти документы, в которые входят лишь точная форма слова в запросе, перед этим словом в запросе нужно поставить восклицательный знак. Два восклицательных знака действуют иначе — ведется поиск всех производных слов от заданного.
Как и в поиске на Яндексе, здесь также поддерживается поиск синонимов, поиск слов, находящихся на определенном расстоянии друг от друга, поиск словосочетаний.
Поиск в зонах документа и их атрибутах будет полезен, на мой взгляд, в первую очередь даже не для посетителей вашего сайта. К тому же, поисковый сервер можно использовать не для внешнего сайта, а в пределах внутренней, локальной сети. И вот здесь вполне уместно формировать для индексируемых документов зоны и в дальнейшем вести по ним поиск.
В отличие от других правил формирования запросов, операторы зонноатрибутивного поиска зависят от настроек, примененных при создании индексных файлов. А именно, в них используются имена поисковых зон и атрибутов, заданные в конфигурационных файлах парсеров. Имена документных атрибутов также могут быть заданы в конфигурационном файле источника данных. В табл. 10.3 приведено краткое описание операторов запросов, связанных с поиском по зонам и атрибутам.