Added semantic search interfacing

This commit is contained in:
2024-02-16 13:04:14 -08:00
parent fbdf5e9473
commit c18ec26d31
2 changed files with 41 additions and 0 deletions
+40
View File
@@ -15,12 +15,16 @@ import string # for literals shortcut
import json # for dictionary
import hunspell # for spell checking (not really used)
import os
import sys
import logging
import socket
import json
from tools import sanity_check
from dotenv import load_dotenv
load_dotenv()
SERMON_DB = os.getenv("KJV_SERMON_DB")
SECRET_API_KEY = os.getenv("KJV_SECRET_API_KEY")
sequential_purge_delta: timedelta = timedelta(days=90)
timestamp_runtime: datetime = datetime.now().strftime("%d%b%y-%H:%M")
@@ -175,6 +179,15 @@ def get_verse_id(book_id, chapter: str, verse: str) -> str:
verseid = "001" # Avoid verse_ids list IndexErrors on :- searches
return str(book_id) + chapterid + verseid
def get_ref_from_verse_id(verse_id):
# verse_id is 00000000 (00 000 000) (book + chapter + verse)
verse_id = str(verse_id).zfill(8)
book_id = verse_id[:2]
chapter = verse_id[2:5]
verse = verse_id[5:8]
bookname = kjv_cur.execute("SELECT n FROM key_english WHERE b = ?;",(book_id,)).fetchone()[0]
return bookname + " " + chapter + ":" + verse
def get_next_prev_chapter(verseid) -> dict:
current_chapter = verseid[:-3]
@@ -271,6 +284,33 @@ def ref_parse_book(ref):
return book
return False
def request_semantic_search(query):
HOST = 'localhost'
PORT = 1613
data = {"query": query}
data_string = json.dumps(data).encode()
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(data_string)
print(f"sent {data_string}")
data = b''
while True:
part = s.recv(1024)
if not part:
break
print(part)
data += part
return json.loads(data.decode())
@app.get("/semantic/<key>/<query>")
def do_semantic_search(key:str, query:str):
if key != SECRET_API_KEY:
return jsonify({'error': "Invalid Authorization"})
result = request_semantic_search(query=query)
return jsonify(result)
@app.get("/ref/<ref>") # find database verse_id by english scripture reference (1John5:7)
def get_single_reference_verse_id(ref:str):
ref = ref.split(",")[0]