Class: BibleSearchService
Defined in: Services/BibleSearchService.ts:28
Bible Search Service
Comprehensive search implementation using SQLite FTS5. Supports all search types: multi-word, phrase, proximity, boolean, fuzzy, regex, Strong's.
Key features:
- Auto-indexing for proximity searches
- Result highlighting with match positions
- Deduplication across modules
- Auto-fuzzy fallback when < 10 results
- Search history tracking
Implements
Constructors
Constructor
new BibleSearchService(
searchRepo,bibleModules,bibleBookRepo):BibleSearchService
Defined in: Services/BibleSearchService.ts:32
Parameters
searchRepo
IBibleSearchRepository
bibleModules
Map<string, IBibleRepository>
bibleBookRepo
Returns
BibleSearchService
Methods
addBibleModule()
addBibleModule(
abbreviation,repository):void
Defined in: Services/BibleSearchService.ts:52
Add a Bible module to the search service Used to dynamically add modules when searching across all Bibles
Parameters
abbreviation
string
repository
Returns
void
buildIndex()
buildIndex(
module,books?,onProgress?):Promise<void>
Defined in: Services/BibleSearchService.ts:1780
Build the proximity search index for a module. Indexes book-level concatenated text and verse position mappings into FTS5.
Parameters
module
string
Module abbreviation (e.g., "KJV")
books?
number[]
Optional array of book numbers to index (default: all 66 books)
onProgress?
(progress) => void
Optional callback invoked after each book is indexed
Returns
Promise<void>
Throws
Error if the module is not registered
Implementation of
clearHistory()
clearHistory():
Promise<void>
Defined in: Services/BibleSearchService.ts:1726
Clear all search history entries.
Returns
Promise<void>
Implementation of
getHistory()
getHistory(
limit?):Promise<object[]>
Defined in: Services/BibleSearchService.ts:1716
Retrieve recent search history entries.
Parameters
limit?
number = 20
Maximum number of history entries to return (default 20)
Returns
Promise<object[]>
Array of history entries with query text, type, result count, and date
Implementation of
getIndexStatus()
getIndexStatus(
modules):Promise<Map<string, {booksIndexed?:number;indexed:boolean;lastIndexed?:string;totalBooks?:number; }>>
Defined in: Services/BibleSearchService.ts:1737
Get the proximity search index status for one or more modules. Reports how many of the 66 books are indexed for each module.
Parameters
modules
string[]
Array of module abbreviations to check
Returns
Promise<Map<string, { booksIndexed?: number; indexed: boolean; lastIndexed?: string; totalBooks?: number; }>>
Map of module abbreviation to index status
Implementation of
getRegisteredModules()
getRegisteredModules():
string[]
Defined in: Services/BibleSearchService.ts:61
Get list of currently registered module abbreviations
Returns
string[]
getStrongsEntryInfo()
getStrongsEntryInfo(
strongsNumber): {gloss:string;transliteration?:string;word?:string; } |null
Defined in: Services/BibleSearchService.ts:828
Get cached Strong's entry info (word, transliteration, gloss). Returns null if WordFamilyService is not configured.
Parameters
strongsNumber
string
Returns
{ gloss: string; transliteration?: string; word?: string; } | null
getSuggestions()
getSuggestions(
partialQuery,limit?):Promise<string[]>
Defined in: Services/BibleSearchService.ts:1697
Get search suggestions for auto-complete based on search history and spelling.
Parameters
partialQuery
string
The partial query typed so far
limit?
number = 10
Maximum number of suggestions to return (default 10)
Returns
Promise<string[]>
Array of suggested query strings
Implementation of
getWordFamily()
getWordFamily(
strongsNumber): {members:WordFamilyMember[];primary:WordFamilyMember; } |null
Defined in: Services/BibleSearchService.ts:819
Get the word family for a Strong's number (for UI display). Returns null if WordFamilyService is not configured.
Parameters
strongsNumber
string
Returns
{ members: WordFamilyMember[]; primary: WordFamilyMember; } | null
parseQuery()
parseQuery(
query):ParsedQuery
Defined in: Services/BibleSearchService.ts:269
Parse a search query string into its structured components without executing a search. Useful for UI display of search type or pre-validation.
Parameters
query
string
The raw search query string
Returns
ParsedQuery
Parsed query with detected search type, terms, and type-specific fields
Implementation of
search()
search(
query,options):Promise<SearchResult[]>
Defined in: Services/BibleSearchService.ts:90
Execute a Bible text search across one or more modules.
Parses the query to determine search type (multi-word, phrase, proximity, boolean, fuzzy, regex, or Strong's number), routes to the appropriate implementation, then applies deduplication, ranking, and result limiting.
Additional behaviors:
- Auto-promotes multi-word queries to proximity when options.proximityDistance is set
- Retries with Unicode character variants (e.g., "Aenon" -> "Ænon") on zero results
- Auto-supplements with fuzzy matches when result count is between 1-9
- Tracks the search in history for suggestions
Parameters
query
string
The search query string. Supports quoted phrases, "~N" proximity, Strong's numbers (e.g., "G25"), regex with "/pattern/", and boolean operators.
options
Search configuration: modules to search, book range, result limit, proximity distance, fuzzy settings, etc.
Returns
Promise<SearchResult[]>
Array of SearchResult objects sorted by relevance (exact before fuzzy, then phrase-match boost, then Bible order)
Throws
Error if the query has invalid syntax
Implementation of
setWordFamilyService()
setWordFamilyService(
service):void
Defined in: Services/BibleSearchService.ts:44
Set the WordFamilyService for Strong's word-root searches. Must be called before using searchStrongs with includeRelatedWords.
Parameters
service
WordFamilyService
Returns
void