Конфигурационный файл модуля поиска (по умолчанию 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>
В конфигурационном файле возможно использование однострочных комментариев; каждый комментарий начинается с символа "#".
Часть файла, отвечающая за конфигурирование модуля поиска, содержит следующие параметры, размещенные построчно:
Параметр задает путь к поисковому индексу и может использоваться в случае если Вы не собираетесь хранить индекс в каталоге 'cgi-bin' либо планируете использовать несколько поисковых индексов.
Пример:
::CONFIG path=/home/www/search/en/
Для MS Windows:
::CONFIG path=d:\www\search\en\
Параметр определяет поле Content-type заголовка. По умолчанию - "text/html". Результаты поиска могут также формироваться в виде XML-файла.
Пример:
::CONFIG content-type = text/xml
Параметр определяет логику поиска:
Логическая операция "And" - наиболее быстрая; рекомендуется к использованию в случае если размер поискового индекса превышает 100Mb.
Логическая операция "Combined" рекомендуется к использованию на небольших сайтах с общим количеством страниц не более 50.
Пример:
::CONFIG SearchType = Combined
Параметр задает пароль для доступа в интерфейс статистических данных (см. Статистика).
Пример:
::CONFIG stats = secret
Параметр задает регистрационный код (подробнее о регистрации на официальном сайте приложения).
Пример:
::CONFIG regcode = JF7KF-KFJEP-4KSFT-K49GN-FJ40F
Параметр определяет термин, отображаемый в результатах поиска при условии использования опции %P (найденные стоп-слова).
Пример:
::CONFIG StopWords =, Ignored Words :
Параметр задает максимальную релевантность страниц отображаемых в результатах поиска. Страницы с релевантностью большей чем MaxRelevance игнорируются. Этот параметр позволяет повысить качество поиска путем "выбрасывания" страниц с подозрительно высокой релевантностью. Обычно это страницы не содержащие много текста или содержащие слишком часто повторяющиеся ключевые слова.
Пример:
::CONFIG MaxRelevance = 4000
Параметр задает термин, отображаемый в результатах поиска при условии использования опции %S (соответствие поисковому запросу). Используется только совместно с логической операцией "Combined" (см. выше).
Пример:
::CONFIG NonStrictMatch = [non strict match]
Часть конфигурационного файла, содержащая шаблоны, состоит из HTML кода, генерирующего HTML-документ с результатами поиска. В данном коде следует использовать специальные символы, заменяемые на соответствующий текст по окончании генерации HTML-документа:
Пример:
-- 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 ------------------------------------
В системе предусмотрена возможность использования различных вариантов шаблонов для отображения различных модификаций поискового интерфейса и использования различных индексных файлов в процессе поиска. Для использования нескольких шаблонов следует задать параметр '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'>
Ниже представлен пример использования шаблона, позволяющего пользователю:
В шаблоне указан следующий путь к индексным файлам:
::CONFIG path=/home/www/search/en
Пример:
-- 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 ---------------------------------------
Начиная с версии 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 ------------------------------------
Часто, при поиске по большому количеству сайтов результаты поиска могут засорять страницы только одного сайта. Например, при поисковой фразе "новости" будут найдены все страницы новостного сайта, заканчивающиеся на " // Местные новости", а результаты с других сайтов будут сдвинуты на сотни, а иногда на тысячи позиций.
Для того, чтобы такой ситуации не возникало, крупные поисковые системы, такие как 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 ------------------------------------