use windowed fetch for context expansion instead of loading all items
This commit is contained in:
parent
b6113bf8ab
commit
3c1a33779f
1 changed files with 8 additions and 4 deletions
|
|
@ -168,11 +168,15 @@ async def expand_with_items(
|
||||||
if not ref_positions:
|
if not ref_positions:
|
||||||
return results
|
return results
|
||||||
|
|
||||||
# Fetch all items for the document to ensure we always detect section
|
# Fetch a window of items around matched positions. The margin must be
|
||||||
# structure correctly, regardless of where the match falls.
|
# wide enough to find section boundaries (the nearest section_header/title
|
||||||
item_count = await document_item_repository.get_item_count(document_id)
|
# above and below the match).
|
||||||
|
all_positions = sorted(ref_positions.values())
|
||||||
|
window_margin = max_items * 10
|
||||||
|
window_start = max(0, min(all_positions) - window_margin)
|
||||||
|
window_end = max(all_positions) + window_margin
|
||||||
window_items = await document_item_repository.get_items_in_range(
|
window_items = await document_item_repository.get_items_in_range(
|
||||||
document_id, 0, item_count
|
document_id, window_start, window_end
|
||||||
)
|
)
|
||||||
|
|
||||||
if not window_items:
|
if not window_items:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue