Skip to content

Commit 1b5e506

Browse files
committed
chore: add TSVECTOR column
1 parent a71bad7 commit 1b5e506

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

lib/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ class ErrsolePostgres extends EventEmitter {
120120
timestamp TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
121121
level VARCHAR(31) DEFAULT 'info',
122122
message TEXT,
123+
message_tsv TSVECTOR GENERATED ALWAYS AS (to_tsvector('english', message)) STORED,
123124
meta TEXT,
124125
errsole_id BIGINT
125126
)`,
@@ -129,6 +130,7 @@ class ErrsolePostgres extends EventEmitter {
129130
`CREATE INDEX IF NOT EXISTS idx_${this.logsTable}_source_level_timestamp_id ON ${this.logsTable} (source, level, timestamp, id)`,
130131
`CREATE INDEX IF NOT EXISTS idx_${this.logsTable}_timestamp_id ON ${this.logsTable} (timestamp, id)`,
131132
`CREATE INDEX IF NOT EXISTS idx_${this.logsTable}_errsole_id ON ${this.logsTable} (errsole_id)`,
133+
`CREATE INDEX IF NOT EXISTS idx_${this.logsTable}_message_tsv ON ${this.logsTable} USING GIN (message_tsv)`,
132134

133135
`CREATE TABLE IF NOT EXISTS ${this.usersTable} (
134136
id BIGSERIAL PRIMARY KEY,
@@ -410,10 +412,9 @@ class ErrsolePostgres extends EventEmitter {
410412

411413
// Search terms with AND logic
412414
if (searchTerms && searchTerms.length > 0) {
413-
searchTerms.forEach(term => {
414-
whereClauses.push(`message ILIKE $${index++}`);
415-
values.push(`%${term}%`);
416-
});
415+
const tsQuery = searchTerms.map(term => `${term}:*`).join(' & '); // AND logic for search terms
416+
whereClauses.push(`message_tsv @@ to_tsquery('english', $${index++})`);
417+
values.push(tsQuery);
417418
}
418419

419420
// Apply filters

0 commit comments

Comments
 (0)