...
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 DBcreate 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 callnumbercallnumber
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
queriesThe titles for the browse option can be queried on the fly either from the
instances
table or theinstances
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 instancesInsert from the temporary table arrays into the main table tables should be ordered to avoid deadlocks on main table indices
Drawio | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
A library has only holdings related to instances
A library has both holdings and items related to instances
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:
Cons:
|
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:
Cons:
|
Addressing the holding-level call number browsing
...