3.13. Хранение сжатых копий документов

DataparkSearch имеет возможность хранения сжатых копий проиндексированных документов. Копии сжимаются и хранятся при помощи нового демона - stored, который устанавливается в поддиректорию sbin корневой директории установки DataparkSearch (по умолчанию: /usr/local/dpsearch/sbin).

stored может быть использован для создания цитат документов на основе слов из запроса. Для задания приблизительного размера цитаты в байтах, используйте в search.htm (в секции variables) команду ExcerptSize. Значение, используемое по умолчанию, равно 256. Вы можете выключить создание цитат (но сохранив возможность показа сохраненных копий) документов указав команду DoExcerpt no в вашем поисковом шаблоне.

В DataparkSearch можно хранить сжатые копии документов без использования демона stored. Для этого вместо настройки параметров stored в файле конфигурации indexer.conf необходимо указать команду DoStore yes.

Сохраненные копии документов отображаются отдельной CGI-программой storedoc.cgi. Эта программа получает сохранённую копию от stored и отображает содержимое этого документа в окне броузера предварительно выделив слова из поискового запроса.

Для использования возможностей stored, скомпилируйте DataparkSearch с поддержкой zlib:


./configure --with-zlib <other arguments>

Вы можете использовать команды Store и NoStore для разрешения или запрещения сохранения некоторых фалов по шаблону. Аргументы у этих команд точно такиеже, как и у команды Allow (см. Разд. 3.10.14). Все документы сохраняются по умолчанию, если включена поддержка stored.

3.13.1. Конфигурирование stored

Перед использованием stored, пожалуйста, проделпйте следующее:

  • Скопируйте /usr/local/dpsearch/etc/stored.conf-dist в /usr/local/dpsearch/etc/stored.conf.

    Отредактируйте /usr/local/dpsearch/etc/stored.conf

    Следующие команды используются для конфигурирования stored:

    • Listen говорит stored к какому адресу и/или порту привязаться. По умолчанию, stored привязывается к порту 7004 и каждому адресу. Возможно указывать только порт:

      Listen 7004

      Или только адрес:

      Listen 127.0.0.2

      Или оба, алрес и порт:

      Listen 127.0.0.2:7004

    • VarDir задаёт альтернативную рабочую директорию var/, например:

      VarDir /mnt/d/dpsearch/var/

    • StoredFiles указывает число файлов-хранилищ, создаваемых в директории var/stored/, например:

      StoredFiles 256

    • OptimizeInterval задаёт интервал в секундах между попытками оптимизировать очередной файл-хранилище, например:

      OptimizeInterval 300

    • OptimizeRatio задаёт уровень дефрагментации в процентах, по достижении которого файл-хранилище оптимизируется, например:.

      OptimizeRatio 3

  • Запустите stored:

    /usr/local/dpsearch/sbin/stored &

  • Отредактиируйте indexer.conf и search.htm (или searchd.conf, если используется searchd). Укажите адрес и порт, кроторые indexer будет использовать для связи с stored. Используйте параметр stored команды DBAddr, например:

    DBAddr mysql://localhost/search/?dbmode=cache&stored=localhost:7004

3.13.2. Как работает stored

После того, как вы сконфигурируете и запустите stored, indexer будет передавать ему проиндексированные документы. А stored будет сжимать полученные документы и сохранять их на диске.

3.13.3. Использование stored при поиске

Для включения отображения сохраненных документов при поиске, проделайте следующее:

  • Отредактируйте storedoc.htm (шаблон для storedoc.cgi), если необходимо.

  • Добавьте в секцию <!--res--> шаблона search.htm ссылку на storedoc.cgi, например: <A HREF="$(stored_href)">Cached copy</A>

  • Укажите URL CGI-программы storedoc.cgi в search.htm (по умолчанию $(stored_href) будет возвращать /cgi-bin/storedoc.cgi). Если вам необходимо указать другой URL, добавьте в раздел переменных шаблона search.htm следующую строку:

    StoredocURL /path/to/storedoc.cgi

    Или для абсолютной ссылки:

    StoredocURL http://servername/path/to/storedoc.cgi

Если все сконфигурировано правильно, при поиске stored работает следующим образом:

  1. search.htm показывает ссылку на storedoc.cgi;

  2. Когда пользователь кликает по ссылке, storedoc.cgi посылает запрос к демону stored по адресу, указанному в storedoc.htm при помощи параметра stored команды DBAddr;

  3. По этому запросу, stored находит и разжимает запрошенную копию и отправляет ее storedoc.cgi;

  4. storedoc.cgi разбирает полученный документ и выделяет все слова из поискового запроса. Способ выделения указывается в шаблоне storedoc.htm командами HlBeg and HlEnd;


Geo Visitors Map who's online