저는 데이터베이스가 아주 새로워서 높은 수준의 조언을 구하고 있습니다.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까지 다양 할 수 있습니다.
문제점
나는 "내용"열 내의 데이터에 합리적으로 빠른 텍스트 검색을 수행 할 수 있도록하고 싶습니다 (예를 들면, WHERE 콘텐츠 LIKE '%의 some_error %'). 현재 검색은 매우 느립니다 (8206 행까지 검색하려면 10 분 초과).
나는 색인 생성이 내 문제의 해결책으로 의도되었지만 색인을 만들 수있는 것처럼 보이지 않는다. 색인을 너무 많이 만들면 오류가 발생한다.
=# 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