odata-sqlite-search
Version:
OData v4 $search functionality for SQLite - Full-text search with FTS5 and TDD
50 lines • 3.44 kB
TypeScript
export interface SearchResult {
sql: string;
parameters: any[];
}
export interface FTSIndexResult {
sql: string;
parameters: any[];
}
export interface SearchConfig {
table: string;
ftsTable: string;
columns: string[];
}
export interface MultiTableSearchResult {
queries: SearchResult[];
}
export interface RankingWeights {
[column: string]: number;
}
export interface ISearchProvider {
createFTSIndex(table: string, indexName: string, columns: string[]): FTSIndexResult;
buildSearchQuery(searchTerm: string, ftsTable: string, searchableColumns: string[]): SearchResult;
buildSearchQueryWithRanking(searchTerm: string, ftsTable: string, searchableColumns: string[]): SearchResult;
buildSearchQueryWithCustomRanking(searchTerm: string, ftsTable: string, searchableColumns: string[], weights: RankingWeights): SearchResult;
buildSearchQueryWithThreshold(searchTerm: string, ftsTable: string, searchableColumns: string[], minRelevance: number): SearchResult;
buildSearchWithFilter(searchTerm: string, ftsTable: string, searchableColumns: string[], existingFilter: string): SearchResult;
buildMultiTableSearch(searchTerm: string, searchConfig: SearchConfig[]): MultiTableSearchResult;
buildUnifiedSearch(searchTerm: string, searchConfig: SearchConfig[]): SearchResult;
buildOptimizedSearchQuery(searchTerm: string, ftsTable: string, searchableColumns: string[]): SearchResult;
}
export declare class SearchProvider implements ISearchProvider {
createFTSIndex(table: string, indexName: string, columns: string[]): FTSIndexResult;
buildSearchQuery(searchTerm: string, ftsTable: string, searchableColumns: string[]): SearchResult;
buildSearchQueryWithRanking(searchTerm: string, ftsTable: string, searchableColumns: string[]): SearchResult;
buildSearchQueryWithCustomRanking(searchTerm: string, ftsTable: string, searchableColumns: string[], weights: RankingWeights): SearchResult;
buildSearchQueryWithThreshold(searchTerm: string, ftsTable: string, searchableColumns: string[], minRelevance: number): SearchResult;
buildSearchWithFilter(searchTerm: string, ftsTable: string, searchableColumns: string[], existingFilter: string): SearchResult;
buildMultiTableSearch(searchTerm: string, searchConfig: SearchConfig[]): MultiTableSearchResult;
buildUnifiedSearch(searchTerm: string, searchConfig: SearchConfig[]): SearchResult;
buildOptimizedSearchQuery(searchTerm: string, ftsTable: string, searchableColumns: string[]): SearchResult;
private validateSearchInputs;
buildPhraseSearch(phrase: string, ftsTable: string, searchableColumns: string[]): SearchResult;
buildWildcardSearch(term: string, ftsTable: string, searchableColumns: string[]): SearchResult;
buildBooleanSearch(expression: string, ftsTable: string, searchableColumns: string[]): SearchResult;
buildProximitySearch(term1: string, term2: string, distance: number, ftsTable: string, searchableColumns: string[]): SearchResult;
buildSearchWithLimit(searchTerm: string, ftsTable: string, searchableColumns: string[], limit: number): SearchResult;
buildSearchWithOffset(searchTerm: string, ftsTable: string, searchableColumns: string[], offset: number): SearchResult;
buildSearchWithPagination(searchTerm: string, ftsTable: string, searchableColumns: string[], limit: number, offset: number): SearchResult;
}
//# sourceMappingURL=search-provider.d.ts.map