crunk
1 year ago
7 changed files with 87 additions and 2 deletions
@ -0,0 +1,56 @@ |
|||
from whoosh.index import create_in |
|||
from whoosh.fields import * |
|||
from whoosh.qparser import QueryParser |
|||
|
|||
import csv |
|||
import os |
|||
import argparse |
|||
from csvparser.csvparser import getfullpublication |
|||
|
|||
SCRIPT_DIR = os.path.dirname(__file__) |
|||
DATA_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, "data")) |
|||
|
|||
|
|||
def index_csv_file(): |
|||
filename = os.path.join(DATA_DIR, "varlib.csv") |
|||
with open(filename, 'r', encoding='utf_8_sig') as libcsv: |
|||
csv_as_dict = csv.DictReader(libcsv) |
|||
for row in csv_as_dict: |
|||
rowcontent = concatenate_csv_row(row) |
|||
writer.add_document(title=row["Id"], path=u"/a", content=rowcontent) |
|||
writer.commit() |
|||
|
|||
def search(searchinput): |
|||
with ix.searcher() as searcher: |
|||
query = QueryParser("content", ix.schema).parse(searchinput) |
|||
results = searcher.search(query) |
|||
bookid = results[0]['title'] |
|||
for book in results: |
|||
bookid = book['title'] |
|||
print(f"result found: {bookid}") |
|||
publication = getfullpublication(bookid) |
|||
print(f"{publication['Author']} - {publication['Title']}") |
|||
|
|||
|
|||
def concatenate_csv_row(row): |
|||
rowcontent = [] |
|||
rowcontent.append(row["Publication"]) |
|||
rowcontent.append(row["Author"]) |
|||
rowcontent.append(row["Fields"]) |
|||
rowcontent.append(row["Type"]) |
|||
rowcontent.append(row["Publishers"]) |
|||
rowcontent.append(row["Highlights"]) |
|||
rowcontent.append(row["Comments"]) |
|||
return ' '.join(rowcontent) |
|||
|
|||
parser = argparse.ArgumentParser() |
|||
parser.add_argument("-s", "--search", type=str) |
|||
args = parser.parse_args() |
|||
searchinput = args.search |
|||
|
|||
schema = Schema(title=TEXT(stored=True), path=ID(stored=True), content=TEXT) |
|||
ix = create_in(DATA_DIR, schema) |
|||
writer = ix.writer() |
|||
index_csv_file() |
|||
print(searchinput) |
|||
search(searchinput) |
@ -0,0 +1,23 @@ |
|||
let searchInput = document.getElementById('booksearch'); |
|||
let timeout = null; |
|||
// Listen for keystroke events
|
|||
searchInput.addEventListener('keyup', function (e) { |
|||
// Clear the timeout if it has already been set.
|
|||
clearTimeout(timeout); |
|||
// Make a new timeout set to go off in 1000ms (1 second)
|
|||
timeout = setTimeout(function () { |
|||
if (searchInput.value.length > 2) { |
|||
searchTags(searchInput.value); |
|||
} else { |
|||
clearSearchTags(); |
|||
} |
|||
}, 1000); |
|||
}); |
|||
|
|||
function searchTags(searchInput) { |
|||
console.log(searchInput); |
|||
} |
|||
|
|||
function clearSearchTags() { |
|||
console.log("stop search"); |
|||
} |
Loading…
Reference in new issue