Guides
Configuration
Complete reference for configuring the TrigramSearchEngine, including adapter setup, table mapping, and cache options.
Configuration
The TrigramSearchEngine constructor accepts a database adapter and a configuration object. This page details all available configuration options.
Basic Setup
import { TrigramSearchEngine, MemoryCacheProvider } from "pg-smart-search";
const engine = new TrigramSearchEngine(adapter, {
tableName: "products",
searchColumns: ["name", "description"],
cacheProvider: new MemoryCacheProvider(),
});EngineConfig Options
Prop
Type
Database Adapter
pg-smart-search is bring-your-own-adapter: there is no built-in Postgres client. You
implement the 3-method DatabaseAdapter interface, wrapping whatever driver you already
use (pg, Prisma, Drizzle, Knex, ...).
interface DatabaseAdapter {
query<T>(sql: string, params?: unknown[], options?: { signal?: AbortSignal }): Promise<T[]>;
execute(sql: string, params?: unknown[], options?: { signal?: AbortSignal }): Promise<void>;
transaction<T>(
callback: (tx: DatabaseAdapter) => Promise<T>,
options?: { signal?: AbortSignal },
): Promise<T>;
}
// Minimal example wrapping `pg`
class PoolAdapter implements DatabaseAdapter {
constructor(private pool: import("pg").Pool) {}
async query<T>(sql: string, params: any[] = []) {
return (await this.pool.query(sql, params)).rows as T[];
}
async execute(sql: string, params: any[] = []) {
await this.pool.query(sql, params);
}
async transaction<T>(fn: (tx: DatabaseAdapter) => Promise<T>) {
return fn(this); // wrap in BEGIN/COMMIT/ROLLBACK for production use
}
}