HOWTO: Using @quatrain/searchengine
This guide presents the most common usage scenarios for configuring and performing document searches with @quatrain/searchengine.
1. Defining a Custom Search Engine Adapter
Extend AbstractSearchEngineAdapter and implement the abstract methods:
import { AbstractSearchEngineAdapter, SearchDocument, SearchQueryOptions, SearchResultItem } from '@quatrain/searchengine';
export class CustomSearchAdapter extends AbstractSearchEngineAdapter {
async initialize(): Promise<void> {
// Connect to search backend or initialize index
}
async indexDocument(doc: SearchDocument): Promise<void> {
// Index document
}
async removeDocument(id: string): Promise<void> {
// Remove document
}
async search(query: string, options?: SearchQueryOptions): Promise<SearchResultItem[]> {
// Execute search query
return [];
}
}2. Registering an Engine Instance
Register the adapter into the SearchEngine singleton:
import { SearchEngine } from '@quatrain/searchengine';
import { CustomSearchAdapter } from './CustomSearchAdapter';
const adapter = new CustomSearchAdapter({
alias: 'default',
config: { host: 'localhost' }
});
SearchEngine.addEngine(adapter, 'default', true);3. Indexing and Searching Documents
// Indexing
await SearchEngine.indexDocument({
id: 'doc-101',
title: 'Project Architecture Plan',
content: 'Cloud-native architecture and dependency injection guidelines.',
category: 'technology'
});
// Searching
const results = await SearchEngine.search('cloud-native', {
mode: 'hybrid',
limit: 10
});
console.log(results);