|
|
5.2. Способ хранения Cache5.2.1. ВведениеВ DataparkSearch реализован способ хранения cache, позволяющий быстро индексировать и искать среди миллионов документов. 5.2.2. Структура индексов слов при способе хранения CacheОсновная идея способа хранения слов cache заключается в хранении индекса слов и вспомогательной информации о документах непосредственно на диске, а не в SQL базе данных. Вся информация об URL (таблицы url и urlinfo) тем не менее продолжает храниться в SQL базе данных. Индекс слов разделён на несколько файлов, число которых может быть задано при помощи команды WrdFiles (по умолчанию - 0x300). Число файлов хранения дополнительной информации о документах задаётся командой URLDataFiles (по умолчанию - 0x300). Внимание: вы должны иметь одаковые значения для WrdFilesи URLDataFilesво всех файлах конфигурации. Индекс слов находится в файлах, расположенных в поддиректории /var/tree относительно корневой директории установки DataparkSearch. Вспомогательная информация о документах храниится в файлах, расположенных в поддиректории /var/url относительно корневой директории установки DataparkSearch. 5.2.3. Утилиты для способа хранения CacheПри выборе способа хранения cache используютсся две дополнительные программы: cached и splitter. cached - демон, получающий по сети информацию о хранимых словах от indexer и записывает её на ваш жёсткий диск. Этот демон может работать в двух режимах, как старый демон cachelogd, входивший в предыдущие версии и только записывающий получаемую информацию на диск, и в новом режиме, в котором объединены функции cachelogd и splitter. splitter - программа создания индексов слов для быстрого поиска на основе записей, сделаных cached при работе в старом режиме. Эти индексы слов и используются в дальнейшем при обработке запросов на поиск. 5.2.4. Запуск способа хранения cacheДля запуска режима хранения cache проделайте следующее:
5.2.5. Использование нескольких splitter одновременноsplitter имеет два ключа:
#!/bin/sh splitter -f 000 -t 3f0 & splitter -f 400 -t 7f0 & splitter -f 800 -t bf0 & splitter -f c00 -t ff0 & 5.2.6. Использование скрипта run-splitterВ поддиректории /sbin находится скрипт run-splitter. Он помогает последовательно выполнить все шаги по построению индекса слов для быстрого поиска. run-splitter имеет два параметра командной строки: run-splitter --hup --split или в короткой форме: run-splitter -k -s Каждый параметр запускает соответсвующий шаг создания индекса слов. run-splitter выполняет все шаги созданяи индекса в правильной последовательности:
В большинстве случаев достаточно просто запустить скрипт run-splitter со всеми параметрами -k -s. Раздельное использование этих параметров редко необходимо. run-splitter имеет необязательные параметры -p=n и -v=m для задания соответсвенно паузы в секунда после обработки каждого буффера и указания выдачи сообщений. n - число секунд (по умолчанию 0), m - уровень выдачи (по умолчанию 4). 5.2.7. ПоискДля использования search.cgi со способом хранения "cache", сконфигурируйте ваш шаблон search.htm как обычно, добавив "cache" в качестве значения параметра dbmode команды DBAddr 5.2.8. Использование лимитов при поискеДля применения лимитов при поиске с использование способа хранения cache, необходимо добавить соответсвующие команды Limit в ваши indexer.conf (или cached.conf, если используется cached) и search.htm или searchd.conf (если используется searchd). Limit prm:type [SQL-Request [DBAddr]] Для использования, например, лимитов по тэгу, категории и сайту, добавьте следующие строки в ваши файлы конфигурации: Limit t:tag Limit c:catategory Limit site:siteid где t - имя CGI параметра (&t=) этого ограничения, tag - тип ограничения. Вместо tag/category/siteid в примере выше вы можете использовать значения из следующей таблицы: Таблица 5-1. Типы предопределенных лимитов способа хранения Cache
Если для команды Limit указан второй, необязательный, параметр Limit prm:strcrc32 "SELECT label, rec_id FROM labels" pgsql://u:p@localhost/sitedb/здесь prm - имя лимита и имя CGI-параметра, используемого для задания ограничения по этому лимиту; strcrc32 - тип используемого лимита, в данном случа - строка. Вместо strcrc32 возможно использовать следующие типы: Таблица 5-2. Типы SQL-лимитов способа хранения Cache
Третьим, необязательным, пораметром В поисковом шаблоне search.htm или в файле конфигурации searchd.conf (если используется searchd) указывать необязательные параметры
Limit prm:strcrc32
|