Настройки поисковой машины в ini-файле

Конфигурационный файл поискового движка

Это простой текстовый файл (кодировка текста - ASCII), хранящий значения некоторых параметров, которые влияют на работу поискового движка, но меняются крайне редко и поэтому вводить их каждый раз в командной строке поиска было бы утомительно. Для поисковой утилиты φaind этот файл называется faind.ini, хотя разработчики, использующие компоненты поисковой машины, могут задавать любое имя и загружать конфигурации с помощью процедуры API sol_ReadIni.

Сама идеология ini-файлов очень распространена в Linux-программах, а для Windows-программ более распространенным является хранение параметров в системном реестре (хотя в последние годы приобретает популярность хранение конфигурационных параметров в текстовых XML-файлах, облегчающее перенос настроек между компьютерами). Мы не стали хранить параметры конфигурации в системном реестре Windows как по соображениям кросс-платформенности кода поискового движка, так и по причине очевидной выгодности хранения конфигурации в текстовом файле - это позволяет использовать поисковый движок (в том числе входящий в состав других проектов) без инсталляции и "не оставляя следов". С точки зрения конечного пользователя способ хранения конфигурационных параметров совершенно не важен.

Формат конфигурационного файла одинаков для всех версий поискового движка - для консольной поисковой утилиты, для .NET и Win32 DLL версий встраиваемой поисковой машины, а также для оконной поисковой системы Integra.

Порядок поиска ini-файла

Утилита faind сразу после запуска пытается найти и прочитать конфигурационный файл с именем faind.ini. Для обеспечения максимальной гибкости настроек движка поиск этого файла ведется в такой последовательности:

1. текущий каталог запуска утилиты;

2. подкаталог \Application Data\Faind (для MS Windows) в домашнем каталоге текущего пользователя или /home/Faind (для Linux);

3. каталог, в котором размещается программа.

Обычно действует п.3 - конфигурационный файл туда записывается при инсталляции программы и содержит установки по умолчанию. Каждый пользователь может перенастроить работу утилиты по своим индивидуальным потребностям, сохранив копию faind.ini в своем домашнем каталоге (п.2). К примеру, можно изменить настройки языка и кодовых страниц для одного пользователя, не мешая остальным. Вариант п. 1 предназначен скорее для отладочных целей.

Для разработчиков, применяющих компоненты поисковой машины, надо заметить, что поисковый движок после старта сам не загружает конфигурационный файл, а ждет от прикладного кода явного указания на путь к файлу.

Явное задание пути к конфигурационному файлу

Если реализованный по умолчанию порядок поиска конфигурационного файла не устраивает, можно явно задавать путь к файлу при запуске консольных версий поисковой системы (настольной или серверной) с помощью опции

-ini путь_к_ini_файлу

Формат записей

Ряд редко изменяемых настроек записан в ini-файл с именем faind.ini. Это текстовый файл, разбитый на секции, каждая из которых имеет заголовок в скобках []. Параметры записываются в секции в виде пар:

параметр = значение

Каждая опция документирована прямо в ini файле (комментарии отделяются от содержательного текста символами // ).

Подробнее о синтаксисе этого файла и программной реализации чтения из ini-файлов можно прочитать здесь. Надо заметить, что концепция ini-файлов понятна для опытных пользователей *nix-систем типа Linux и FreeBSD. Если Вы не испытываете желания разбираться с ini-файлом - оставьте его как есть, он содержит вполне работоспособную конфигурацию для текущей версии поискового движка.

Явное задание языка и кодовой страницы для консоли

За языковую настройку поискового движка в конфигурационном файле отвечают три поля: lang, tty_codepage и session_codepage. Если оставить эти поля пустыми в ini файле, то поисковая машина после старта запросит у операционной системы соответствующие значения и будет далее использовать их. Обычно это наилучший вариант.

[ui]

lang = ""
tty_codepage = ""
session_codepage = ""

В частности, в этом случае при старте поисковая утилита возьмет текущую кодовую страницу, определенную для консоли. В операционных системах MS Windows, начиная с версии Windows XP, есть возможность динамически переключать кодовую страницу для сеанса консоли с помощью команды chcp. Благодаря этому можно выполнять поиск в документах на многих европейских языках с выдачей вполне читаемых сообщений на консоль. Данный вопрос подробнее рассмотрен в разделе примеров. Если оставить поле tty_codepage в конфигурационном файле пустым, то каждый запуск поисковой утилиты FAIND будет сопровождаться автоматической настройкой на текущую кодовую страницу консоли,  и не потребуется вручную задавать это значение в конфигурационном файле.

Бывают, впрочем, ситуации, когда, к примеру, в русской редакции ОС желательно работать с английской версией поискового движка. В этом случае можно либо править языковые настройки пользовательской учетной записи, что приведет к изменению условий работы всех других программ, либо задать явно язык и кодовые страницы в конфигурационном файле поисковой машины.

Для GNU/Linux обычно кодовая страница консоли - KOI-8, но может быть и 1251. Для переключения в KOI-8 следует выставить значение переменной tty_codepage в 847. О значениях индексов кодовых таблиц для других алфавитов можно почитать здесь.

Указание на домашний каталог пользователя: символ ~

В ряде случаев удобно хранить генерируемые поисковой машиной файлы в домашнем каталоге текущего пользователя. Это позволяет избежать проблем с правами доступа к файлам в системах Windows NT/2k/XP. В конфигурационном файле указать на домашний каталог пользователя в пути можно с помощью символа тильда ~. К примеру:

[index]

// Directory to store index data base. ~ is a placeholder for user's home dir
storage = "~\\Application Data\\Faind\\Index"

Вообще говоря, такое употребление символа тильда взято из ОС GNU/Linux. В старых версиях MS Windows 9x/Me домашний каталог как таковой отсутствует - поэтому символ ~ указывает для всех пользователей на один и тот же каталог в системном каталоге Windows. Для нормальных многопользовательских ОС начиная с Windows NT у каждого пользователя есть свой каталог (там размещается папка "Мои документы" и некоторые другие).

Обратите внимание на употребление двух символов '\' в строке пути. Это связано с интерпретацией строковых полей по правилам языка C/C++, где символ '\' употребляется для ввода специальных непечатаемых символов в строку (например, символа перевода строки), а два символа \\ заменяются на один.

 Указание на каталог поискового движка: макрос ?exe\

При чтении значений из ini-файла этот сочетание символов заменяется на каталог, где располагается исполнимый файл поискового движка. С помощью этого макроса удобно указывать расположение файлов словаря, которые одинаковы для всех пользователей (например, файлы словаря).

Конфигурация интернет-паука

Для корректной работы поискового движка с интернет-ресурсами может потребоваться задание адреса прокси-сервера, через который с локальной машины осуществляется выход в интернет. Параметр с именем proxy в секции internet позволяет задать адресы прокси-серверов и номера портов для подключения:

[internet]
     proxy = "http=http://10.1.1.222:3128 ftp=ftp://10.1.1.222:21"
     proxy_bypass = "<local>"

Спецификации прокси-серверов задаются как список элементов, разделяемых пробелами. Формат должен быть понятен из вышеприведенного примера. Обратите внимание, что в примере заданы разные прокси серверы для работы с ftp и http-серверами (указаны разные номера портов).

Параметр proxy_bypass позволяет задать список хостов, доступ к которым выполняется без прокси-сервера. Значение <local> позволяет работать без прокси с серверами, в именах которых нет точек.

Языки словаря

По умолчанию грамматический движок загружает морфологические анализаторы для всех доступных в словаре языков. Это в большинстве случаев приводит к ненужному расходу оперативной памяти. Чтобы загружать только нужные анализаторы, необходимо установить значение переменной languages в секции dictionary. Можно задавать один или несколько сокращенных названий языков через точку с запятой: en - английский, ru - русский, fr - французский, es - испанский. Кроме того, можно использовать следующие метаимена: all или * - все языки, user - язык текущего пользователя.

Для управления списком загружаемых языков из командной строки можно использовать команду -language, которая перекрывает описанную выше переменную конфигурации.

Конфигурирование в настольной поисковой системе

Ряд параметров (не все) в конфигурационном файле можно удобно изменять из программы Integra в специальном диалоговом окне. Результаты такого конфигурирования сохраняются опять-таки в ini-файле, поэтому они оказывают влияние и на работу консольной поисковой утилиты.

Настройка веб-страниц поискового сервера

Настройка веб-страниц, выдаваемых поисковым сервером по http-запросам браузеров, подробно описана здесь.

Дополнительные материалы

Процедурный API поисковой системы

Где скачать поисковую систему и SDK

Скачать SDK поисковой системы с примерами и другие компоненты можно здесь поисковая система

  © Mental Computing 2010
изменено 01-Jun-10