CallNumber Browse Refactoring

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 DB

    • create 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

Indexing Sequence Diagram

Browsing Sequence Diagram

Risks