om4r932 commited on
Commit
fbd466c
·
1 Parent(s): ef7e565

Add optional keyword for quick search

Browse files
Files changed (2) hide show
  1. app.py +37 -36
  2. static/script.js +2 -2
app.py CHANGED
@@ -222,7 +222,7 @@ class BatchDocResponse(BaseModel):
222
  search_time: float
223
 
224
  class KeywordRequest(BaseModel):
225
- keywords: str
226
  search_mode: Literal["quick", "deep"]
227
  case_sensitive: Optional[bool] = False
228
  release: Optional[str] = None
@@ -450,20 +450,21 @@ async def main_menu():
450
  def search_spec(request: KeywordRequest):
451
  start_time = time.time()
452
  booleanLowered = request.case_sensitive
453
- kws = [willLower(_, booleanLowered) for _ in request.keywords.split(" ")]
 
 
 
 
454
  unique_specs = set()
455
  results = []
456
 
 
 
 
457
  for string, spec in finder_spec.indexer_specs.items():
458
  put = False
459
  if spec['id'] in unique_specs:
460
  continue
461
-
462
- release = request.release
463
- working_group = request.working_group
464
- spec_type = request.spec_type
465
- search_mode = request.search_mode
466
-
467
  if spec.get('version', None) is None or (release is not None and spec["version"].split(".")[0] != str(release)):
468
  continue
469
  if spec.get('type', None) is None or (spec_type is not None and spec["type"] != spec_type):
@@ -471,35 +472,35 @@ def search_spec(request: KeywordRequest):
471
  if spec.get('working_group', None) is None or (working_group is not None and spec["working_group"] != working_group):
472
  continue
473
 
474
- if not spec["working_group"] != working_group:
475
- print(spec["working_group"], working_group, spec["working_group"] != working_group)
476
-
477
- contents = []
478
- version = finder_spec.search_document(spec['id'], spec['release']).split("/")[-1].replace(".zip", "").split("-")[-1]
479
- if search_mode == "deep":
480
- doc = finder_spec.get_document(spec['id'], version)
481
- docValid = not isinstance(doc, str)
482
-
483
- if request.mode == "and":
484
- if all(kw in willLower(string, booleanLowered) for kw in kws):
485
- put = True
486
  if search_mode == "deep":
487
- if docValid:
488
- for chapter in list(doc.keys())[1:]:
489
- if "references" not in chapter.lower() and "void" not in chapter.lower() and "annexe" not in doc[chapter].lower():
490
- if all(kw in willLower(doc[chapter], booleanLowered) for kw in kws):
491
- put = True
492
- contents.append(chapter)
493
- elif request.mode == "or":
494
- if any(kw in willLower(string, booleanLowered) for kw in kws):
495
- put = True
496
- if search_mode == "deep":
497
- if docValid:
498
- for chapter in list(doc.keys())[1:]:
499
- if "references" not in chapter.lower() or "void" not in chapter.lower() or "annexe" not in doc[chapter].lower():
500
- if any(kw in willLower(doc[chapter], booleanLowered) for kw in kws):
501
- put = True
502
- contents.append(chapter)
 
 
 
 
 
 
 
 
 
 
 
503
 
504
  if put:
505
  spec_content = spec
 
222
  search_time: float
223
 
224
  class KeywordRequest(BaseModel):
225
+ keywords: Optional[str] = ""
226
  search_mode: Literal["quick", "deep"]
227
  case_sensitive: Optional[bool] = False
228
  release: Optional[str] = None
 
450
  def search_spec(request: KeywordRequest):
451
  start_time = time.time()
452
  booleanLowered = request.case_sensitive
453
+ search_mode = request.search_mode
454
+ release = request.release
455
+ working_group = request.working_group
456
+ spec_type = request.spec_type
457
+ kws = [willLower(_, booleanLowered) for _ in request.keywords.split(" ")] if request.keywords != " " else ""
458
  unique_specs = set()
459
  results = []
460
 
461
+ if kws == "" and search_mode == "deep":
462
+ raise HTTPException(status_code=400, detail="You must enter keywords in deep search mode !")
463
+
464
  for string, spec in finder_spec.indexer_specs.items():
465
  put = False
466
  if spec['id'] in unique_specs:
467
  continue
 
 
 
 
 
 
468
  if spec.get('version', None) is None or (release is not None and spec["version"].split(".")[0] != str(release)):
469
  continue
470
  if spec.get('type', None) is None or (spec_type is not None and spec["type"] != spec_type):
 
472
  if spec.get('working_group', None) is None or (working_group is not None and spec["working_group"] != working_group):
473
  continue
474
 
475
+ if kws != "":
 
 
 
 
 
 
 
 
 
 
 
476
  if search_mode == "deep":
477
+ contents = []
478
+ version = finder_spec.search_document(spec['id'], spec['release']).split("/")[-1].replace(".zip", "").split("-")[-1]
479
+ doc = finder_spec.get_document(spec['id'], version)
480
+ docValid = not isinstance(doc, str)
481
+
482
+ if request.mode == "and":
483
+ if all(kw in willLower(string, booleanLowered) for kw in kws):
484
+ put = True
485
+ if search_mode == "deep":
486
+ if docValid:
487
+ for chapter in list(doc.keys())[1:]:
488
+ if "references" not in chapter.lower() and "void" not in chapter.lower() and "annexe" not in doc[chapter].lower():
489
+ if all(kw in willLower(doc[chapter], booleanLowered) for kw in kws):
490
+ put = True
491
+ contents.append(chapter)
492
+ elif request.mode == "or":
493
+ if any(kw in willLower(string, booleanLowered) for kw in kws):
494
+ put = True
495
+ if search_mode == "deep":
496
+ if docValid:
497
+ for chapter in list(doc.keys())[1:]:
498
+ if "references" not in chapter.lower() or "void" not in chapter.lower() or "annexe" not in doc[chapter].lower():
499
+ if any(kw in willLower(doc[chapter], booleanLowered) for kw in kws):
500
+ put = True
501
+ contents.append(chapter)
502
+ else:
503
+ put = True
504
 
505
  if put:
506
  spec_content = spec
static/script.js CHANGED
@@ -91,8 +91,8 @@ keywordSearchBtn.addEventListener("click", async ()=>{
91
  let checked = caseSensitiveFilter.checked;
92
  let mode = modeFilter.value;
93
 
94
- if (!keywords) {
95
- showError("Please enter at least one keyword");
96
  return;
97
  }
98
 
 
91
  let checked = caseSensitiveFilter.checked;
92
  let mode = modeFilter.value;
93
 
94
+ if (!keywords && searchMode == "deep") {
95
+ showError("Please enter at least one keyword in deep search mode");
96
  return;
97
  }
98