Upload app.py
Browse files
app.py
CHANGED
|
@@ -216,6 +216,9 @@ def apply_filters(indices: list[int], sources_filter=None, folders=None, min_siz
|
|
| 216 |
result.append(idx)
|
| 217 |
return result
|
| 218 |
|
|
|
|
|
|
|
|
|
|
| 219 |
def trim_record(rec: dict) -> dict:
|
| 220 |
return {
|
| 221 |
"doc_id": rec["doc_id"],
|
|
@@ -263,6 +266,10 @@ def metadata_matches(q: str, exact: bool, search_paths: bool) -> set[int]:
|
|
| 263 |
|
| 264 |
def search(q="", sources_filter=None, folders=None, min_size=None, max_size=None, page=1, page_size=100, sort="relevance", exact=False, search_paths=True):
|
| 265 |
q = q.strip()
|
|
|
|
|
|
|
|
|
|
|
|
|
| 266 |
if not q:
|
| 267 |
indices = list(range(len(records)))
|
| 268 |
filtered = apply_filters(indices, sources_filter, folders, min_size, max_size)
|
|
@@ -290,8 +297,9 @@ def search(q="", sources_filter=None, folders=None, min_size=None, max_size=None
|
|
| 290 |
elif sort == "size":
|
| 291 |
filtered.sort(key=lambda idx: (-records[idx].get("size", 0), records[idx]["display_rel_path"].lower()))
|
| 292 |
total = len(filtered)
|
| 293 |
-
|
| 294 |
-
|
|
|
|
| 295 |
return {"results": result_items, "total": total, "page": page, "page_size": page_size, "did_you_mean": None}
|
| 296 |
|
| 297 |
def fulltext_search(q="", sources_filter=None, folders=None, min_size=None, max_size=None, page=1, page_size=100, sort="relevance", exact=False, search_paths=True):
|
|
|
|
| 216 |
result.append(idx)
|
| 217 |
return result
|
| 218 |
|
| 219 |
+
def has_filters(sources_filter=None, folders=None, min_size=None, max_size=None) -> bool:
|
| 220 |
+
return bool(sources_filter or folders or min_size is not None or max_size is not None)
|
| 221 |
+
|
| 222 |
def trim_record(rec: dict) -> dict:
|
| 223 |
return {
|
| 224 |
"doc_id": rec["doc_id"],
|
|
|
|
| 266 |
|
| 267 |
def search(q="", sources_filter=None, folders=None, min_size=None, max_size=None, page=1, page_size=100, sort="relevance", exact=False, search_paths=True):
|
| 268 |
q = q.strip()
|
| 269 |
+
start = (page - 1) * page_size
|
| 270 |
+
if not q and sort == "relevance" and not has_filters(sources_filter, folders, min_size, max_size):
|
| 271 |
+
result_items = [trim_record(rec) for rec in records[start:start + page_size]]
|
| 272 |
+
return {"results": result_items, "total": len(records), "page": page, "page_size": page_size, "did_you_mean": None}
|
| 273 |
if not q:
|
| 274 |
indices = list(range(len(records)))
|
| 275 |
filtered = apply_filters(indices, sources_filter, folders, min_size, max_size)
|
|
|
|
| 297 |
elif sort == "size":
|
| 298 |
filtered.sort(key=lambda idx: (-records[idx].get("size", 0), records[idx]["display_rel_path"].lower()))
|
| 299 |
total = len(filtered)
|
| 300 |
+
result_items = [trim_record(records[idx]) for idx in filtered[start:start + page_size]]
|
| 301 |
+
if q:
|
| 302 |
+
result_items = add_summaries(result_items)
|
| 303 |
return {"results": result_items, "total": total, "page": page, "page_size": page_size, "did_you_mean": None}
|
| 304 |
|
| 305 |
def fulltext_search(q="", sources_filter=None, folders=None, min_size=None, max_size=None, page=1, page_size=100, sort="relevance", exact=False, search_paths=True):
|