from typing import List, NewType, Optional, Union
import gradio as gr
from spacerini_utils.index import fetch_index_stats
from spacerini_utils.search import _search, init_searcher, SearchResult
HTML = NewType('HTML', str)
searcher = init_searcher(sparse_index_path="sparse_index")
def get_docid_html(docid: Union[int, str]) -> HTML:
docid_html = (
f"🔒xsum/'+f'{docid}'
)
return docid_html
def process_results(results: List[SearchResult], language: str, highlight_terms: Optional[List[str]] = None) -> HTML:
if len(results) == 0:
return """
No results retrieved.
""" ) docid_html = get_docid_html(result["docid"]) results_html += """{}
Document ID: {}
Score: {}
Language: {}
{}
None
Dataset Statistics: Total Number of Documents = {stats["documents"]}, Number of Terms = {stats["total_terms"]}
""" demo = gr.Blocks( css=".underline-on-hover:hover { text-decoration: underline; } .flagging { font-size:12px; color:Silver; }" ) with demo: with gr.Row(): gr.Markdown(value=description) with gr.Row(): query = gr.Textbox(lines=1, max_lines=1, placeholder="Type your query here...", label="Query") with gr.Row(): lang = gr.Dropdown( choices=[ "en", "detect_language", "all", ], value="en", label="Language", ) with gr.Row(): k = gr.Slider(1, 100, value=10, step=1, label="Max Results") with gr.Row(): submit_btn = gr.Button("Submit") with gr.Row(): results = gr.HTML(label="Results") def submit(query: str, lang: str, k: int): query = query.strip() if query is None or query == "": return "", "" return { results: search(query, lang, k), } query.submit(fn=submit, inputs=[query, lang, k], outputs=[results]) submit_btn.click(submit, inputs=[query, lang, k], outputs=[results]) demo.launch(enable_queue=True, debug=True)