Откройте предпочитаймый вами фронт-энд в окне броузера:
http://your.web.server/path/to/search.cgi
Чтобы найти что-то, просто наберите слова, которые хотите найти и нажмите кнопку ОТОСЛАТЬ.
Например: mysql odbc.
DataparkSearch найдет все документы, содержащие слово mysql
и/или слово odbc
.
Лучшие документы, имеющий более высокую релевантность и популярность будут показаны первыми.
Чтобы найти фразу, просто заключите её в кавычки. Например: "uncontrollable sphere".
Фронт-энды DataparkSearch поддерживают следующие параметры, указываемыме в CGI-запросе. Вы можете использовать их в HTML форме на странице поиска.
Таблица 8-1. Параметры поиска
q | текстовый параметр, содержащий запрос на поиск |
vq | текстовый параметр, содержащий поисковый запрос на языке Verity Query Language (префиксный вариант), см Разд. 8.1.8>. Чтобы использовать этот параметр, необходимо омтавить пустым параметр q. |
s | строка символов, задающая порядок сортировки результатов поиска. Порадок сортировки задаётся слева направо. Большая буква соответсвует сортировке по убыванию, маленькая - по возрастанию. Возможные символы: R или r - сортировка по релевантности, P или p - сортировка по PopularityRank, I или i - сортировка по важности (произведению релевантности и PopularityRank), A или a - сортировка по сумме релевантности и PopularityRank, D или d - сортировка по дате последнего изменения документа. Значение по умолчанию: RP. |
ps | число результатов поиска, отображаемых на одной странице, 20 по умолчанию. Максимальное значение равно 100. Это ограничение введено во избежание излишней перегрузки сервера и может быть изменено заменой значения MAX_PS в файле search.c. |
np | номер страницы начиная с 0, 0 по умолчанию (первая страница) |
p | номер страницы начиная с 1, для использования с OpenSearch |
m | Режим поиска. На данный момент поддерживаются значения all, any, near и bool. |
wm | Совпадение слова. Вы можете использовать этот параметр для указания способа совпадения слов. Зачения wrd, beg, end и sub соответственно обозначают целое слово, начало слова, окончание слова и подстрока слова. |
t | Лимит по тэгу. Задаёт поиск только среди документов, помеченых указаным тэгом.
Этот параметр имеет то же значение, что и ключ -t у indexer. |
c | Лимит по категории. См. Разд. 6.2> для описания. |
ul | Лимит по URL, подстрока URL для ограничения поиска по части базы.
Поддерживаются SQL шаблоны % и _. Этот параметр имеет тот же эффект, что и ключ -u у indexer.
Если указан неабсолютный URL, search.cgi дообавит знаки % до и после значения этого параметра,
если используется SQL база данных для хранения информации. Например,
<OPTION VALUE="/manual/"> а не VALUE="%/manual/%". Если указан полный URL (с указанием схемы)б search.cgi
добавляет знак % только после значения этого параметра. Например, для <OPTION VALUE="http://localhost/">
search.cgi передаст http://localhost/% в оператор SQL LIKE.
Не поддерживается для способа хранения cache. |
wf | Значения весов. Позволяет изменить значения весов различных секций документов во аремя поиска. Значение должно представлять из себя строку шестнадцатеричных чисел. См. обяснение ниже в Разд. 8.1.3>. |
g или lang | Лимит по языку. Стандартный двубуквенный код языка по ISO, для ограничения поиска по полю url.lang. |
tmplt | Имя файла шаблона (без пути). Для указания имени файла шаблона, отличного от стандартного search.htm. |
type | Лимит по Content-Type. Для способа хранения cache должно быть точное соответсвие. Для SQL-режимов возможно использование шаблонов SQL. |
sp | Ограничение использования словоформ. =1, если необходим поиск по всем словоформам (включая корректировку правописания, если включена поддержка aspell) введённых слов. =0, если необходим поиск только введенных форм слов. Значение по умолчанию равно 1. Вы можете указать значение 0 для ускорения поиска. |
sy | Ограничение использования синонимов. =1, если необходимо использовать синонимы введённых слов. =0, не использовать синонимы. Значение по умолчанию равно 1. Вы можете указать значение 0 для ускорения поиска. |
empty | Использовать ли лимиты для вывода результатов, если не задано ни одного слова в запросе. =yes, использовать лиминты для вывода результатов, если не задано ни одного слова в запросе (по умолчанию). =no, не использовать. |
dt | Ограничение по времени. Поддерживается три типа.
Если dt равно back, это означает, что вы хотите ограничить результаты поиска по давности. Давность ограничивается параметром dp. Если dt равно er, это означает, что поиск поиск будет ограничен
страницами старше или новее указаной даты. Старше/новее задаётся параметром Если dt равно range, обозначает, что поиск будет ограничен
двумя датами, начала и конца. Даты задаются двумя параметрами, соответственно |
dp | Ограничение по давности, если значение dt равно back.
Задаётся в формате xxxA[yyyB[zzzC]]. Пробелы допускаются между xxx и A и yyy и т.д.).
xxx, yyy, zzz - суть числа (могут быть негативными!), A, B, C могут быть одним из следующего (буквы такие же как в функциях
strptime/strftime): s - секунда, M - минута, h - час, d - день, m - месяц, y - год. Примеры:
4h30M - 2 часа и 30 минут 1Y6m-15d - 1 год и шесть месяцев минус 15 дней 1h-60M+1s - 1 час минус 60 минут плюс 1 секунда |
dx | Флаг старше/новее, если значение dt равно er. =1 - новее. =-1 - старше. |
dm | Месяц даты, если значение dt равно er. 0 - январь, 1 - февраль, ... 11 - декабрь. |
dy | Год даты, если значение dt равно er. Четыре цифры. Например, 1999 или 2001. |
dd | День даты, если значение dt равно er. 1...31. |
db | Начальная дата интервала, если значение dt равно range. Дата указывается как строка в формате dd/mm/yyyy, где dd - день, mm - месяц, а yyyy - четырёхцифровой год. |
de | Конечная дата интервала, если значение dt равно range. Дата указывается как строка в формате dd/mm/yyyy, где dd - день, mm - месяц, а yyyy - четырёхцифровой год. |
Параметр wf
, передаваемый в search.cgi задаёт веса
для различных секций документов. См. раздел "Section" в файле indexer.conf-dist.
Для использования этой возможности необходимо иметь уникальные ID для различных секций документов, указываемых в командах Section файла конфигурации indexer.conf command. На данный момент поддерживается до 256 различных секций.
Предположим, что в indexer.conf определены следующие секции:
Section body 1 256 Section title 2 128 Section keywords 3 128 Section description 4 128
Значение wf
- строка шестнадцатиричных цифр ABCD. Каждая цифра - вес
соответствующей секции документа. Самая правая цифра соответсвует секции 1. Для указанной выше конфигурации секций:
D - вес для секции 1 (body)
C - вес для секции 2 (title)
B - вес для секции 3 (keywords)
A - вес для секции 4 (description)
Примеры:
wf=0001 поиск только по секции body.
wf=1110 поиск по секциям title,keywords,desctription, но не по секции body.
wf=F421 поиск по:
Description с весом 15 (F hex)
Keywords с весом 4
Title с весом 2
Body с весом 1
По умолчанию, все секции имеют вес 1. Если число секций, указанных в wf
, меньше числа определенных секций, то для всех оставшихся секций устанавливается вес,
равный весу секции с макимальным номером из wf
. Т.е.:
wf=01 также ищет только по секции body.
Если DataparkSearch собирается с быстрым вариантом расчёта релевантности (указана опция --enable-rel=fast
для configure),
в этом случае только нулевое или ненулевое значение веса имеет смысл (это позволяет только включать/исключать
заданные секции из результатов поиска). Чтобы использовать полную поддержку динамических весов секций, необходимо
задать опцию --enable-rel=full
для configure во время сборки DataparkSearch.
При сипользовании динамических shtml страниц, содержащих SSI вызов search.cgi, т.е. search.cgi не вызывается напрямую как CGI программа, необходимо отвергнуть переменную окружения SCRIPT_NAME, т.к. все ссылки на страницах поиска должны вести на динамическую страницу, а не на search.cgi.
Например, если shtml страница содержит строку <--#include virtual="search.cgi">, переменная SCRIPT_NAME будет указывать на search.cgi, а не на shtml страницу.
Для возможности отказа от использования переменной SCRIPT_NAME, мы ввели переменную DPSEARCH_SELF, которую вам необходимо добавить в конфигурацию сервера Apache httpd.conf.А search.cgi сначала проверяет переменную DPSEARCH_SELF и только потом, при неудаче SCRIPT_NAME. Вот пример использования переменной окружения DPSEARCH_SELF при помощи команд конфигурирования сервера Apache SetEnv/PassEnv:
SetEnv DPSEARCH_SELF /path/to/search.cgi PassEnv DPSEARCH_SELF
Зачастую необходимо использовать несколько различных шаблонов с одним и тем же search.cgi. Существует несколько способов сделать это. Они указываются ниже в том порядке, в каком search.cgi определяет имя шаблона:
search.cgi проверяет CGI параметр tmplt
.
Таким образом вы можете задать имя файла нужного шаблона в этом параметре.
search.cgi проверяет переменную окружения
DPSEARCH_TEMPLATE
. Таким образом вы можете установить путь до нужного шаблона в этой переменной.
search.cgi проверяет path info часть URL, доступную через переменную окружения PATH_INFO. Например, http://localhost/cgi-bin/search.cgi/search1.html в качестве шаблона использует search1.htm, а http://localhost/cgi-bin/search.cgi/search2.html использует search2.htm, и т.д.
search.cgi также поддерживает внуттрений релирект Apache.
Он проверяет переменных окружения REDIRECT_STATUS
и REDIRECT_URL
.
Для использования этого способа указания шаблона, необходимо добавить следующие строчки в файл конфигурации
Apache httpd.conf:
AddType text/html .zhtml AddHandler zhtml .zhtml Action zhtml /cgi-bin/search.cgi
Поместите search.cgi в вашу /cgi-bin/ директорию. Затем поместите HTML-шаблон на вашем сервере с расширением .zhtml, например, template.zhtml. Теперь вы можете открыть страницу поиска: http://www.site.com/path/to/template.zhtml Конечно, вы можете использовать любое свободное расширение вместо .zhtml.
Если два предыдущих способа не помогли определить имя шаблона,
search.cgi откроет шаблон с тем же именем, что и выполняемая CGI-программа, имя которой указано в
переменной окружения
SCRIPT_NAME
. Т.е. search.cgi бужет использовать шаблон
ETC/search.htm, search1.cgi
будет использовать шаблон ETC/search1.htm и т.д., где ETC - /etc директория
DataparkSearch (обычно это
/usr/local/dpsearch/etc). Таким образом вы можете использовать без перекомпиляции тот же
самый search.cgi с различными шаблонами. Просто создайте несколько линков на search.cgi
с различными именами, соответствующими нужным шаблонам в директории /etc
DataparkSearch.
См. также Разд. 7.2>
Оператор allin<section>:, где <section> - имя любой секции, определенной в файле конфигурации sections.conf (или командами Section в indexer.conf или в search.htm/searchd.conf) и имеющей ненулевой номер секции (см. Разд. 3.10.43>), позволяет ограничить область поиска указываемого слова в поисковом запросе только заданой секцией.
От ограничения поиска по секциям при помощи CGI-параметра &wf= отличается тем, что ограничение действует только на слова поискового запроса, указываемые после данного оператора.
Например, если sections.conf содержит команды
Section body 1 256 Section title 2 128 Section url 3 0 strictто в поисковом запросе можно использовать операторы allinbody:, allintitle: и allinurl:.
По запросу computer allintitle: science будут найдены документы, содержащие слово "science" в заголовке и слово "computer" в любой секции документа.
Для задания более сложных запросов, вы можете строить булевы запросы поиска.
Необходимо в поисковой форме указать режим поиска bool
.
DataparkSearch понимает следющие булевы операторы:
AND или & - логическое И. Например, mysql & odbc. DataparkSearch будет искать URL, содержащие оба слова "mysql" и "odbc". Вы также можете использовать знак + для этого оператора.
NEAR - Оператор NEAR принимает истиное значение если оба слова находятся не далее, чем в 16 словах друг от друга. Например, mysql NEAR odbc. DataparkSearch будет искать URL, содержащие оба слова "mysql" и "odbc", расположеные на расстоянии не далее 16 слов друг от друга.
ANYWORD или * - Оператор ANYWORD аналогичен оператору И, но принимает истиное значение, если между обеими словами находится одно любое слово и левый операнд имеет меньшую позицию, нежели правый. Например, "mysql * odbc" - DataparkSearch найдёт все документы, содержащие оба слова "mysql" и "odbc", и меющие любое слово между ними, например, документы с фразой "mysql via odbc".
OR или | - логическое ИЛИ. Например, mysql|odbc. DataparkSearch будет искать URL, содержащие или слово "mysql" или слово "odbc".
NOT или ~ - логическое НЕ. Например, mysql & ~ odbc. DataparkSearch будет искать URL, содержащие слово "mysql" и в тоже время не содержащие слово "odbc". Обратите внимание, что ~ всего лишь исключает некоторые документы из результата поиска. Запрос "~ odbc" ничего не найдёт!
() - оператор группирования для создания более сложных запросов поиска. Например, (mysql | msql) & ~ postgres.
" - оператор выделения фраз. Например, "russian apache" & "web server". Вы также можете использовать знак ' для этого оператора.
Язык запросов хоть и прост, но достаточно мощный. Рассматривайте такой запрос как обычное булево выражение.
DataparkSearch поддерживает только префиксный вариант Verity Query Language.
Также поддерживается только следующее подмножество операторов VQL:
Таблица 8-2. Операторы VQL, поддерживаемые DataparkSearch
<ACCRUE> | эквивалентен оператору OR булевого запроса. |
<AND> | эквивалентен оператору AND булевого запроса. |
<ANY> | эквивалентен оператору OR булевого запроса. |
<NEAR> | эквивалентен оператору NEAR булевого запроса. |
<NOT> | эквивалентен оператору NOT булевого запроса. |
<OR> | эквивалентен оператору OR булевого запроса. |
<PHRASE> | эквивалентен фразе в булевом запросе. |
<WORD> | рассматривается как пустой оператор. |
Устаревшие документы продолжают включаться в результаты поиска по их старому содержимому до тех пор, пока эти документы не будут удалены или обновлены с очередным переиндексированием.