Я новичок в базах данных, и мне нужен совет высокого уровня.
Ситуация
Я создаю базу данных с помощью Postgres 9.3, в базе данных есть таблица, в которой я храню файлы журналов.
CREATE TABLE errorlogs (
id SERIAL PRIMARY KEY,
archive_id INTEGER NOT NULL REFERENCES archives,
filename VARCHAR(256) NOT NULL,
content TEXT);
Текст в содержании может варьироваться по длине от 1k до 50MB.
Проблема
Я хотел бы иметь возможность выполнять достаточно быстрый текстовый поиск данных в столбце "content" (например, WHERE CONTENT LIKE '%some_error%'). Прямо сейчас поиск очень медленный (> 10 минут для поиска по 8206 строкам).
Я знаю, что индексирование предназначено для решения моей проблемы, но я, кажется, не могу создавать индексы - всякий раз, когда я пытаюсь, я получаю сообщения об ошибках, что индекс будет слишком большим.
=# CREATE INDEX error_logs_content_idx ON errorlogs (content text_pattern_ops);
ОШИБКА: строка индекса требует 1796232 байт, максимальный размер 8191
Я надеялся на некоторые советы о том, как обойти эту проблему. Могу ли я изменить максимальный размер индекса? Или мне не стоит пытаться использовать Postgres для полнотекстового поиска в таких больших текстовых полях?
Любой совет очень ценится!