/** Porter stem a lowercase token. Words ≤ 2 chars are returned unchanged. */ export declare function porterStem(word: string): string; /** * Tokenise text into Lucene-style stemmed tokens: lowercase, split on * Unicode word boundaries, drop stopwords + length<2, Porter stem. */ export declare function luceneTokenize(text: string): string[]; export interface LuceneCorpusStats { df: Map; idf: Map; avgDocLen: number; N: number; } export declare function buildLuceneCorpusStats(tokenisedDocs: string[][]): LuceneCorpusStats; /** * Lucene-style Okapi BM25: k1=1.2 (vs hybrid-retrieval's 1.5), b=0.75. */ export declare function luceneBM25(queryTokens: string[], docTokens: string[], stats: LuceneCorpusStats, k1?: number, b?: number): number; //# sourceMappingURL=lucene-bm25.d.ts.map