Я довольно новичок в базах данных, и я ищу советы на высоком уровне.Postgres Large Text Search Advice
Ситуация
Я создание базы данных с помощью 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.
Проблема
Я хотел бы быть в состоянии выполнить достаточно быстро полнотекстовый поиск по данным в столбце «содержание» (например, когда содержание LIKE «% some_error%»). Сейчас поиск выполняется очень медленно (> 10 минут для поиска по 8206 строкам).
Я знаю, что индексирование предназначено для решения моей проблемы, но, похоже, я не могу создавать индексы - всякий раз, когда я пытаюсь получить ошибки, индекс будет слишком большим.
=# CREATE INDEX error_logs_content_idx ON errorlogs (content text_pattern_ops);
ERROR: index row requires 1796232 bytes, maximum size is 8191
Я надеялся на некоторые советы о том, как обойти эту проблему. Могу ли я изменить максимальный размер индекса? Или я не должен пытаться использовать Postgres для полнотекстового поиска в текстовых полях размером с это?
Любые советы очень ценятся!
Я думаю, что вы, вероятно, ищет для полнотекстового поиска/индексации http://www.postgresql.org/docs/9.1/static/textsearch-intro.html. –
Этот ответ также может помочь, http://stackoverflow.com/questions/1566717/postgresql-like-query-performance-variations/13452528#13452528 –
Привет, Джон, спасибо за совет. Я уже прошел через документы по поиску текстов, и я не смог найти никакой информации об ограничениях индекса.Второй комментарий, который вы опубликовали, описывает создание индекса text_pattern_ops, который, как я упоминал выше, возвращает ошибку об слишком большом индексе. – JBeFat