Skip to main content

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

IBibleBookRepository

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

IBibleRepository

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

ISearchService.buildIndex


clearHistory()

clearHistory(): Promise<void>

Defined in: Services/BibleSearchService.ts:1726

Clear all search history entries.

Returns

Promise<void>

Implementation of

ISearchService.clearHistory


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

ISearchService.getHistory


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

ISearchService.getIndexStatus


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

ISearchService.getSuggestions


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

ISearchService.parseQuery


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

SearchOptions

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

ISearchService.search


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