Summary
Current situation or problem: In order to continue to build on call number browse functionality (including browsing by type and browsing by instance classification), we need to refactor the current implementation.
Business expectations
Easily navigate through large datasets.
For example, when the call number shares the first 10 characters of the shelving order.
Address preceding and succeeding navigation especially with large datasets.
Leaving first and last page handling exact and non-exact match
Address effective location facet issues
Address type-specific browsing issues (i.e. sorting and finding exact matches)
Technical expectations
Streamline code. Significantly decrease complexity of code to make it much easier to implement new enhancements.
Requirements
Functional Requirements
Non-functional Requirements
[TBD: Create a NFR Page]
Assumptions
Baseline Architecture
https://github.com/folio-org/mod-search/blob/master/doc/browsing.md#call-number-browsing
Target Architecture
Summary
In
mod-search
PostgreSQL DBcreate a table for call numbers
on create/update/delete events for items create a new trigger that would extract call numbers and related items/instance
Adjust the Reindexing procedure and Ongoing domain events consuming for items
Create a separate index for call numbers
Refactor browse queries to use
search_after
search_before
queries