FOIA_Doc_Search / core /search.py
GodsDevProject's picture
Upload 20 files
5830944 verified
raw
history blame contribute delete
973 Bytes
from typing import List, TypedDict
import json
import os
DATA_PATH = "data/index/demo_index.json"
class SearchResult(TypedDict):
document: str
agency: str
date: str
excerpt: str
citation: str
score: float
def search_docs(query: str) -> List[SearchResult]:
query_l = query.lower()
results: List[SearchResult] = []
if not os.path.exists(DATA_PATH):
return results
with open(DATA_PATH, "r") as f:
docs = json.load(f)
for d in docs:
text = d["excerpt"].lower()
if query_l in text:
score = text.count(query_l) / max(len(text), 1)
results.append({
"document": d["document"],
"agency": d["agency"],
"date": d["date"],
"excerpt": d["excerpt"],
"citation": d["citation"],
"score": round(score, 4)
})
return sorted(results, key=lambda x: x["score"], reverse=True)