8.5. Программа savequery

Служебная программа savequery предназначена для выполнения запроса на языке запросов Яндекса с сохранением результатов в заданный файл. Формат файла с сохраненными результатами такой же, как у временных файлов, создаваемых поисковым сервером в случае, если в его конфигурационном файле задана секция QueryCache.

Программа savequery может быть использована в постиндексирующей процедуре для создания предкомпилированных запросов, идентификаторы которых можно добавлять в пользовательские запросы с помощью оператора языка запросов $ с целью применения фильтра. Файл сохраненного запроса, созданный с помощью savequery, может быть также использован как входные данные для программы hidedocs.

8.5.1. Параметры командной строки

Вызов программы savequery осуществляется следующим образом:

  savequery -y indexprefix -q query -o hits [-r]
Здесь в квадратных скобках указаны необязательные параметры.

-y indexprefix

Путь к файлам, содержащим индекс, по которым будет осуществлен поиск, без окончаний inv/key. Например, если индексные файлы находятся в директории /yandex/workindex/, нужно указать /yandex/workindex/index.

-q query

Путь к файлу, содержащему запрос на языке запросов Яндекса. Файл может содержать переводы строки для удобства написания длинных запросов.

-o hits

Путь к файлу, в который будет записан сохраненный запрос. Если имя файла начинается с символа 'Z' и файл расположен в поддиректории hits индексной директории (указанной в директиве IndexDir), то это имя можно использовать в операторе '$' поиска в найденном.

-r

Учитывать в сохраненном запросе текстовую релевантность найденных документов. По умолчанию сохраняются только внутренние идентификаторы документов.

8.5.2. Пример "семейного фильтра"

Пусть индекс расположен в директории /yandex/workindex. Создадим директорию /yandex/workindex/hits и файл badwords следующего содержания:

       "жрица любви" |
       playboy
       
Создадим сохраненный запрос в файле Zexclude с помощью вызова
      savequery -y /yandex/workindex/index -q badwords -o /yandex/workindex/hits/Zexclude
      
Теперь, если у пользователя тем или иным способом установлен "семейный фильтр", мы можем в функции UserRequest модифицировать запрос пользователя
  userquery
к виду
  (userquery) ~~$$Zexclude
с тем, чтобы исключить из результатов поиска документы с содержанием "только для взрослых".

Copyright © 1997 – 2005 «Яндекс»