Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 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 the first and last page pages handling exact and non-exact match

  • Address effective location facet issues

  • Address type-specific browsing issues (i.e. sorting and finding exact matches)

...

  • In mod-search PostgreSQL DB

    • create tables for call numbers

      • The following fields should be present in the table callnumber table:

        • callnumber_id

        • effective_callnumber_components - set of components for a callnumber

          • callnumber

          • prefix

          • suffix

          • callnumber_type_id

        • volume

        • enumeration

        • chronology

        • copynumber

      • The following fields should be present in the table callnumber_instances table:

        • callnumber_id

        • item_id

        • instance_id

        • title

        • shared

        • tenant_id

        • location_id

    • on create/update/delete events for items create a new procedure that would extract call numbers from items

  • 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

  • The titles for the browse option can be queried on the fly either from the instances table or the instances search index

...

Indexing Sequence Diagram

...

  • The flag whether to extract and store call numbers should be stored in the database

  • The temporary table arrays of records similar to the table structure should be created inside of the procedure based on the main table create temp table tmp_callnumber (like callnumber including indexes);to hold call numbers and call number instances

  • Insert from the temporary table arrays into the main table tables should be ordered to avoid deadlocks on main table indices

Drawio
mVer2
simple0
zoom1simple0
inComment0
custContentId519733283
pageId367919119
lboxcustContentId1519733283
diagramDisplayNameSpitfire-Callnumber-Refactoring-Activity.drawio
lbox1
contentVer2
revision2
baseUrlhttps://folio-org.atlassian.net/wiki
diagramNameSpitfire-Callnumber-Refactoring-Activity.drawio
pCenter0
width383
links
tbstyle
height558

...

  1. A library has only holdings related to instances

  2. A library has both holdings and items related to instances

  3. A library has holdings, but some holdings do not have items

Solution Options

Option

Description

Pros & Cons

Dedicated holdings/items callnumber search indexes

Holdings call number browse and item call number browse are separate features and can enabled/disabled through configuration flags per tenant

Pros:

  • Configurability

  • Minimal Impact on performance

Cons:

  • Does not address case 3

One search index for all callnumbers

If an instance has items, then only item call numbers are filled. If an instance has holdings but not items, the index is filled with callnumbers from holdings

Pros:

  • Covers case 3

Cons:

  • Significant impact on reindex performance

Addressing the holding-level call number browsing

...