DataparkSearch 4.42 Руководство: Поисковая машина
Пред. |  | След.

# Глава 5. Хранение данных

# 5.1. SQL режимы хранения

## 5.1.1. Общая инфоромация о хранении

DataparkSearch сохраняет в базе каждое найденное на страницах слово вместе с номером секции документа, в которой найдено это слово, а также с номером позиции слова в документе. Число появлений каждого слова в документе не влияет на релевантность. Однако номер секции документа, в которой встречается слово, может влиять на релевантность.

## 5.1.2. Разнообразные способы хранения слов

На данный момент DataparkSearch поддерживает следующие способы хранения слов для SQL серверов: "single", "multi", "crc", "crc-multi", "cache". Режимом по умолчанию является "single". Способ задаётся параметром `dbmode` команды DBAddr, указываемой в файлах конфигурации `indexer.conf` и `search.htm`.

    Примеры:
    DBAddr mysql://localhost/search/?dbmode=single
    DBAddr mysql://localhost/search/?dbmode=multi
    DBAddr mysql://localhost/search/?dbmode=crc
    DBAddr mysql://localhost/search/?dbmode=crc-multi

## 5.1.3. Способ хранения single

Если указан режим хранения "single", все слова сохраняются в одной таблице (или текстовом файле, для втсроенной базы данных) со структурой (url_id,word,weight), где url_id - идентификатор документа, равный значению поля rec_id таблицы "url". Word имеет SQL тип `variable char(32)`.

## 5.1.4. Способ хранения multi

Если выбран способ хранения "multi", слова будут сохранены в 13 различных таблицах, в зависимости от их длины. Структура этих таблиц идентична структуре таблицы для способа хранения "single", только для Word используется тип char фиксированной длины, что даёт выигрыш в скорости для большинства баз данных. Это делает режим "multi" более быстрым, по сравнению с "single". Этот режим не реализован для встроенной базы данных.

## 5.1.5. Способ хранения crc

Если выбран способ хранения "crc", DataparkSearch вместо слов будет сохранять их индентификатора, вычесленные как CRC32 сумма от этих слов. Этот режим хранения использует меньше дискового пространства и работает быстрее способов хранения "single" и "multi". Наши тесты показали, что только 250 пар слов из списка в 1.600.000 уникальных слов имеют одинаковую CRC32 сумму. Большая часть этих пар (>90%) содержит по меньшей мере одно слово с ошибкой. Инфоромация о каждом слове хранится в следующей структуре (url_id,word_id,weight), где word_id - 32-битовый идентификатор слова, посчитаный как его CRC32 сумма. Этот режим хранения рекомендуется для больших поисковиков.

## 5.1.6. Способ хранения crc-multi

Если выбран способ хранения "crc-multi", DataparkSearch хранит CRC32 идентификаторы в нескольких таблицах (или двоичных файлах для встроенной базы данных) с такой же структурой, как и для способа хранения "crc", и в зависимости от лины слова, как при режиме хранения "multi". Обычно это самый быстрый способ и рекомендован для больших поисковиков.

## 5.1.7. Способ хранения cache

Добавлен новый способ хранения - "cache". Это самый быстрый способ, позволяющий быстро индексировать и искать среди миллионов документов. Смотрите Разд. 5.2 для дальнейшего объяснения.

## 5.1.8. Замечание о стуктуре таблиц для SQL серверов

Учтите, что мы разрабатываем DataparkSearch с использованием PostgreSQL в качестве SQL сервера и зачастую не имеем возможности тестировать каждую новую версию со всеми поддерживаемыми базами данных. Т.е., если для вашей базы данных нет соответсвующей структуры таблиц в директории `create/you_database`, возьмите в качестве образца структуру для PostgreSQL и создайте по аналогии структуру для вашей базы данных. Структура для PostgreSQL всегда поддерживается в обновлённом состоянии.

## 5.1.9. Дополнительные возможности не-CRC режимов хранения

Режимы хранения `single` и `multi` поддерживают поиск подстрок. Т.к. при использовании режимов хранения `crc` и `crc-multi` хранятся не слова сами по себе, а только их CRC-идентификаторы, то осуществить поиск подстрок не представляется возможным.

Пред. | Начало | След.
Шаблоны для индексирования |  | Способ хранения Cache