Skip to content

Result-processing pipeline ​

Processing sits between SQL results and Torznab XML generation.

Unfiltered path ​

unfiltered passes the requested limit and offset directly to SQL, preserving the v1.0 query order.

Processed path ​

For any other preset, the requested page is mapped to fixed, non-overlapping 1000-row database windows. Each required window is queried and processed independently, then the requested local slice is returned.

This design bounds memory and supports arbitrary offsets, including pages that cross a window boundary. It also means ranking and filtering are window-local, not global across the complete result set.

Ordering guarantees ​

  • Italian ranking uses token-aware title scores.
  • Custom ranking sums all matching score rules.
  • Python's stable sort preserves original database order for equal scores.
  • Exclusion runs before custom scoring.

Hard filters can make a page contain fewer items because pagination slices the processed database window; hidden rows are not backfilled from later windows.

Violarr was created and made possible in part through generative AI tools, under human direction and review.