diff --git a/app.py b/app.py
index f812c69..dd28fcc 100644
--- a/app.py
+++ b/app.py
@@ -105,6 +105,7 @@ cached: dict = {
"chapter_list": [],
"books_chapter_lengths": {},
"json_dictionary": json.load(open("data/1828_Webster_KJV.json", "r")),
+ "grammatical_variants": json.load(open("data/grammatical_variants.json", "r")),
"html_response": open("html/response.html", "r").read(),
"html_navbar": open("html/navbar.html", "r").read(),
"css_navbar": open("styles/header.css", "r").read(),
@@ -773,10 +774,31 @@ def search():
return send_file("html/search.html")
results = lookup_fts(cleaned_keywords)
if not results:
- h = hunspell.HunSpell("data/kjv.dic", "data/kjv.aff")
-
- # Split query into words and correct each one
+ # PRIORITY 1: Try grammatical variant expansion first
words = cleaned_keywords.split()
+
+ for word in words:
+ variants = cached["grammatical_variants"].get(word.lower(), [])
+ if variants:
+ # Try each variant individually
+ for variant in variants:
+ variant_query = cleaned_keywords.replace(word, variant, 1)
+ results = lookup_fts(variant_query)
+ if results:
+ response_list = scripture_response(results)
+ arg_view = request.args.get("view", None)
+ if arg_view == "plain":
+ response = f"Showing results for '{variant_query}' (grammatical variant of '{cleaned_keywords}')\n
" + "
".join(response_list)
+ elif arg_view == "rich":
+ variant_notice = f"