pub mod anchor;
pub mod bm25;
pub mod cache;
pub(crate) mod chunk_excerpt;
pub mod constants;
pub mod fuse;
pub mod fuzzy_title;
pub mod hooks;
pub mod hybrid_pipeline;
pub mod hybrid_single;
pub mod input;
pub mod intent;
pub mod match_text;
pub mod output;
pub mod pool;
pub mod pre_filter;
pub mod query_syntax;
pub mod rerank_pipeline;
pub mod rrf;
pub mod text_fts;
pub mod types;
pub mod vector;
pub use constants::{
BM25_FTS_SCORES, BM25_MIN_TOKENS, BM25_TOKENS_PER_CHAR_DIV, CANDIDATE_FLOOR,
COSINE_DISTANCE_MAX, DEFAULT_SNIPPET_LENGTH, FUZZY_ALIAS_MIN_LEN, GLOBAL_HYBRID_CACHE_SIZE,
HYBRID_PROBE_LEXICAL_LIMIT, HYBRID_PROBE_TITLE_LIMIT, LITERAL_EMPTY_FTS, LLM_CACHE_LIMIT,
RERANK_MID_RANK_THRESHOLD, RERANK_TOP_K, RERANK_TOP_RANK_THRESHOLD, RERANK_WEIGHT_LOW,
RERANK_WEIGHT_MID, RERANK_WEIGHT_TOP, RRF_K, RRF_WEIGHTS, RrfWeights, STRONG_SIGNAL_MIN_GAP,
STRONG_SIGNAL_MIN_SCORE, TRIGRAM_LEN,
};
pub use fuse::{
blend_rerank_candidates, clamp01, estimate_strong_signal, fuse_hybrid_result_lists, sigmoid,
};
pub use fuzzy_title::TitleSearchParts;
pub use hooks::SearchHooks;
pub use hybrid_pipeline::{
HybridPipelineOptions, HybridPipelineOutput, run_hybrid_pipeline,
run_hybrid_pipeline_with_metadata,
};
pub use hybrid_single::{HybridSingleResult, run_hybrid_single};
pub use input::{
Direction, FrontmatterFilter, FrontmatterValue, FrontmatterValueType, SearchInput, SearchMode,
WhereClause, WhereOperator,
};
pub use output::{
AnchorKind, GraphSearchDiagnostics, MatchAnchor, MatchKind, SearchDiagnostics, SearchResponse,
SearchResult,
};
pub use rerank_pipeline::rerank_candidates;
pub use rrf::{RrfList, RrfScoreAccumulator, normalize_and_merge_rrf_results};
pub use text_fts::{
FtsOperator, build_bm25_score, build_trigram_or_query, calculate_trigram_overlap, get_trigrams,
sanitize_fts_query, to_fts_query,
};
pub use types::{HybridScoreData, RawSearchResult, SearchScores};
pub use vector::distance_to_score;