Руководство пользователя / CNSearch 1.5.1
4.2 Модуль поиска
4.2.1 cnsearch.conf
Конфигурационный файл модуля поиска (по умолчанию cnsearch.conf) размещается в одном каталоге с файлом 'search.exe' (search.cgi для Unix) и представляет собой текстовый файл, оптимизированный для ускоренного процесса поиска.
Файл cnsearch.conf состоит из двух частей:
- Конфигурирование - настройки модуля поиска;
- Шаблоны страниц, отображающих результаты поиска.
Структура конфигурационного файла выглядит следующим образом:
::CONFIG regcode = Enter Your registration code here ::CONFIG stats = password ::CONFIG content-type = text/html ::HTMLTOP <HTML> <TITLE>This is the top part of the HTML document</TITLE> </HEAD> <BODY> ::HTMLRESULT <P>This the description of the found page. There will be displayed 10 such descriptions. ::HTMLNOTFOUND <P>This text will be displayed if no search results will be found ::HTMLBOTTOM This is the bottom part of the HTML document </BODY> </HTML>
В конфигурационном файле возможно использование однострочных комментариев; каждый комментарий начинается с символа "#".
4.2.1.1 Параметры конфигурирования
Часть файла, отвечающая за конфигурирование модуля поиска, содержит следующие параметры, размещенные построчно:
Path
Параметр задает путь к поисковому индексу и может использоваться в случае если Вы не собираетесь хранить индекс в каталоге 'cgi-bin' либо планируете использовать несколько поисковых индексов.
Пример:
::CONFIG path=/home/www/search/en/
Для MS Windows:
::CONFIG path=d:\www\search\en\
Content-Type
Параметр определяет поле Content-type заголовка. По умолчанию - "text/html". Результаты поиска могут также формироваться в виде XML-файла.
Пример:
::CONFIG content-type = text/xml
SearchType
Параметр определяет логику поиска:
- And - будут отображены страницы, содержащие все слова поисковой фразы;
- Or - будут отображены страницы, содержащие хотя бы одно из слов поискового запроса;
- Combined - сперва отображаются результаты с учетом параметра "And", затем результаты с учетом параметра "Or" с пометкой "нечеткое совпадение".
Логическая операция "And" - наиболее быстрая; рекомендуется к использованию в случае если размер поискового индекса превышает 100Mb.
Логическая операция "Combined" рекомендуется к использованию на небольших сайтах с общим количеством страниц не более 50.
Пример:
::CONFIG SearchType = Combined
Stats
Параметр задает пароль для доступа в интерфейс статистических данных (см. Статистика).
Пример:
::CONFIG stats = secret
RegCode
Параметр задает регистрационный код (подробнее о регистрации на официальном сайте приложения).
Пример:
::CONFIG regcode = JF7KF-KFJEP-4KSFT-K49GN-FJ40F
StopWords
Параметр определяет термин, отображаемый в результатах поиска при условии использования опции %P (найденные стоп-слова).
Пример:
::CONFIG StopWords =, Ignored Words :
MaxRelevance
Параметр задает максимальную релевантность страниц отображаемых в результатах поиска. Страницы с релевантностью большей чем MaxRelevance игнорируются. Этот параметр позволяет повысить качество поиска путем "выбрасывания" страниц с подозрительно высокой релевантностью. Обычно это страницы не содержащие много текста или содержащие слишком часто повторяющиеся ключевые слова.
Пример:
::CONFIG MaxRelevance = 4000
NonStrictMatch
Параметр задает термин, отображаемый в результатах поиска при условии использования опции %S (соответствие поисковому запросу). Используется только совместно с логической операцией "Combined" (см. выше).
Пример:
::CONFIG NonStrictMatch = [non strict match]
4.2.1.2 Настройка шаблонов
Часть конфигурационного файла, содержащая шаблоны, состоит из HTML кода, генерирующего HTML-документ с результатами поиска. В данном коде следует использовать специальные символы, заменяемые на соответствующий текст по окончании генерации HTML-документа:
- %Q - Текст запроса;
- %G - Текст запроса (urlencoded);
- %O - Количество найденных страниц;
- %N - Номер страницы;
- %U - URL страницы;
- %T - Название страницы;
- %S - Соответствие (отображается только при полном соответствии найденной информации поисковому запросу);
- %R - Релевантность страницы;
- %E - Описание страницы;
- %D - Дата последнего обновления страницы;
- %C - Кодировка символов страницы;
- %F - Название поискового скрипта;
- %I - Номер сайта в поисковом индексе;
- %P - Стоп-слова, найденные в запросе;
- %W - Описание поискового запроса;
- %L - Включение опции сортировки по релевантности
- %A - Включение опции сортировки по дате обновления документа;
- %B - Навигация по найденным страницам (< << 1 2 3 4 5 6 >> >)
Пример:
-- cnsearch.conf ----------------------------------------
# This is a cnsearch configuration file
::CONFIG regcode = Enter Your registration code here
::CONFIG stats = password
::CONFIG content-type = text/html
::CONFIG NonStrictMatch = [non strict match]
::CONFIG StopWords =, Ignored Words :
::CONFIG SearchType = Combined
::HTMLTOP
<HTML>
<HEAD>
<TITLE>Search results - %Q</TITLE>
</HEAD>
<BODY>
<table width=400 height=40 align=center bgcolor=#C0C0C0>
<form action="%F" method=get><tr><td align=center>
<input type=text name=q size=40 maxlength=64 value="%Q">
<input type=submit value="Search">
</td></form></tr></table>
Documents found: %O
<B>%O</B><font color=gray>%W<B>%P</B></font><br>
<br>
<div align=right>
Sort by: <a href="%A">date</a> | <a href="%L">relevancy</a>
</div>
::HTMLRESULT
<HR>
<UL>
<LI>%N. <a href="%U" target=_new>%T</A> <small>
<font color=red>%S</font> [Relevancy: %R]</small>
<UL>
<LI>%E
<LI>%D
<LI>%C
<LI><a href="%U" target=_new>%u</A>
</UL>
</UL>
::HTMLNOTFOUND
<P><font color=red>%Q not found</font>
::HTMLBOTTOM
%B
</BODY>
</HTML>
-- end cnsearch.conf ------------------------------------
4.2.1.3 Использование различных шаблонов
В системе предусмотрена возможность использования различных вариантов шаблонов для отображения различных модификаций поискового интерфейса и использования различных индексных файлов в процессе поиска. Для использования нескольких шаблонов следует задать параметр 'template' в исходном коде поисковой формы. Если параметр 'template' не задан, по умолчанию используется стандартный шаблон 'cnsearch.conf'.
В качестве названия шаблона может фигурировать любое произвольное наименование. Название шаблона должно содержать только латинские буквы (верхнего либо нижнего регистра) и арабские цифры; необязательно добавлять 'conf.' к названию.
Правильный вариант:
<input type="hidden" name="template" value="black">
Неправильный вариант:
<input type=hidden name="template" value='../black'> <input type=hidden name="template" value='red.htm'>
Ниже представлен пример использования шаблона, позволяющего пользователю:
- выбрать нужный индексный файл из нескольких для последующего поиска. Этот же результат можно достигнуть путем указания нужного шаблона в параметре Path (см. Параметры конфигурирования).
В шаблоне указан следующий путь к индексным файлам:
::CONFIG path=/home/www/search/en
- выбрать нужный конфигурационный файл для использования в процессе поиска (при помощи параметра 'template' ). В данном примере пользователю предоставляется возможность выбора между шаблонами en.conf, es.conf, и ru.conf (в первичной поисковой форме будет отображен список данных шаблонов).
Пример:
-- en.conf ---------------------------------------------
::CONFIG path=/home/www/search/en
::CONFIG regcode = Enter Your registration code here
::CONFIG stats = password
::CONFIG content-type = text/html
::CONFIG NonStrictMatch = [non strict match]
::CONFIG StopWords =, Ignored Words :
::CONFIG SearchType = Combined
::HTMLTOP
<HTML>
<HEAD>
<TITLE>Search results - %Q</TITLE>
</HEAD>
<BODY>
<table width=400 height=40 align=center bgcolor=#C0C0C0>
<form action="%F" method=get><tr><td align=center>
<input type=text name=q size=40 maxlength=64 value="%Q">
<input type=submit value="Search">
<select name=template>
<option value="en">English
<option value="es">Spanish
<option value="ru">Russian
</select>
</td></form></tr></table>
Documents found: %O
<B>%O</B><font color=gray>%W<B>%P</B></font><br>
<br>
<div align=right>
Sort by: <a href="%A">date</a> | <a href="%L">relevancy</a>
</div>
::HTMLRESULT
<HR>
<UL>
<LI>%N. <a href="%U" target=_new>%T</A> <small>
<font color=red>%S</font> [Relevancy: %R]</small>
<UL>
<LI>%E
<LI>%D
<LI>%C
<LI><a href="%U" target=_new>%u</A>
</UL>
</UL>
::HTMLNOTFOUND
<P><font color=red>%Q not found</font>
::HTMLBOTTOM
%B
</BODY>
</HTML>
-- end of en.conf ---------------------------------------
4.2.1.4 Поиск по выбранным сайтам
Начиная с версии 1.3 в системе доступна опция поиска по выбранным сайтам. Каждому сайту на стадии индексации назначается порядковый номер, начинающийся с нуля, например:
[job localhost] [Index] URL http://www.mysite.com/ Statistic Append CharSet ByHTTPHeader MaxFiles 10000 StopWordsFile stopwords.txt Exclude search/,mail/,.zip,.gif,.jpg [Index] URL http://www.second.com/ Statistic Append CharSet ByHTTPHeader [Index] URL http://www.test.com/ Statistic Append CharSet ByHTTPHeader
Номера сайтов назначаются следующим образом:
0 - http://www.mysite.com/ 1 - http://www.second.com/ 2 - http://www.test.com/
Обратите внимание, что после осуществления реиндексации у двух разных сайтов может оказаться один номер. Например при реиндексации с использованием следующего конфигурационного файла:
[job addon] [Index] URL http://www.newsite.com/ Statistic Append CharSet ByHTTPHeader MaxFiles 10000 StopWordsFile stopwords.txt Exclude search/,mail/,.zip,.gif,.jpg
сайту http://www.newsite.com/ также присваивается номер "0":
0 - http://www.mysite.com/ 0 - http://www.newsite.com/ 1 - http://www.second.com/ 2 - http://www.test.com/
Для реализации поиска по выбранным сайтам следует использовать параметр "d"; если данный параметр не указан (по умолчанию), поиск будет произведен по всем сайтам.
Пример 3:
-- cnsearch.conf ----------------------------------------
::CONFIG regcode = Enter Your registration code here
::CONFIG stats = password
::HTMLTOP
<HTML>
<HEAD>
<TITLE>Search results - %Q</TITLE>
</HEAD>
<BODY>
<table width=400 height=40 align=center bgcolor=#C0C0C0>
<form action="%F" method=get><tr><td align=center>
<input type=text name=q size=40 maxlength=64 value="%Q">
<input type=submit value="Search">
<br>
<select name=d>
<option value="0">www.mysite.com, www.newsite.com
<option value="1">www.second.com
<option value="2">www.test.com
</select>
</td></form></tr></table>
Documents found: %O
<B>%O</B><font color=gray>%W<B>%P</B></font><br>
<br>
<div align=right>
Sort by: <a href="%A">date</a> | <a href="%L">relevancy</a>
</div>
::HTMLRESULT
<HR>
<UL>
<LI>%N. <a href="%U" target=_new>%T</A> <small>
<font color=red>%S</font> [Relevancy: %R]</small>
<UL>
<LI>%E
<LI>%D
<LI>%C
<LI><a href="%U" target=_new>%u</A>
</UL>
</UL>
::HTMLNOTFOUND
<P><font color=red>%Q not found</font>
::HTMLBOTTOM
%B
</BODY>
</HTML>
-- end cnsearch.conf ------------------------------------
4.2.1.5 Группировка результатов поиска по сайтам
Часто, при поиске по большому количеству сайтов результаты поиска могут засорять страницы только одного сайта. Например, при поисковой фразе "новости" будут найдены все страницы новостного сайта, заканчивающиеся на " // Местные новости", а результаты с других сайтов будут сдвинуты на сотни, а иногда на тысячи позиций.
Для того, чтобы такой ситуации не возникало, крупные поисковые системы, такие как Google, Yandex и Rambler, выводят только по одному результату с каждого сайта. С версии 1.5 такая возможность появилась в CNSearch
Для того чтобы включить группировку по сайтам, нужно добавить скрытое поле group в форму поискового запроса:
-- cnsearch.conf ---------------------------------------- .... <BODY> <table width=400 height=40 align=center bgcolor=#C0C0C0> <form action="%F" method=get><tr><td align=center> <input type="text" name="q" size="40" maxlength="64" value="%Q"> <input type="hidden" name="group" value="1"> <input type="submit" value="Search"> </td></form></tr></table> .... -- end cnsearch.conf ------------------------------------
Для того чтобы дать пользователям произвести более подробный поиск по одному сайту из результатов поиска, обычно используют ссылку "еще с сайта". Реализовать ее можно с помощью специального символа %I:
-- cnsearch.conf ----------------------------------------
....
::HTMLRESULT
....
<LI>%N. <a href="%U" target=_new>%T</A> <small>
<font color=red>%S</font> [Relevancy: %R]</small>
[ <a href="%F?d=%I&q=%G">еще с сайта</a> ]
<UL>
....
-- end cnsearch.conf ------------------------------------
Назад | Оглавление | Далее
