Seamless Catalog Transition at Mount Prospect Public Library

When the Mount Prospect Public Library transitioned from a Horizon-based catalog system to a Polaris-based catalog system, it created a potential challenge for the library’s online catalog links. The old system’s deep links, embedded throughout the library’s website and services, relied on the Horizon catalog identifiers. A change to Polaris threatened to break these links, making it difficult for users to access specific materials. Here’s how I developed a custom solution to tackle this challenge.

The Challenge: Deep Links in a New Catalog Environment

The library’s public-facing catalog, known as Enterprise, relied heavily on “Bib numbers”—unique identifiers tied to Horizon’s system. These numbers formed the backbone of over 11,000 links, directing users to specific resources within the catalog. A typical link in the old system looked like this:

https://mtpros.ent.sirsi.net/client/en_US/default/search/detailnonmodal/ent:$002f$002fSD_ILS$002f0$002fSD_ILS:956887/ada?

However, the new Polaris system uses a completely different identification mechanism, relying on control numbers instead of Bib numbers. For instance, the equivalent item in Polaris would be linked as:

https://ccs.polarislibrary.com/polaris/search/title.aspx?ctx=93.1033.0.0.66&pos=1&cn=4375249

With thousands of links to update, a manual solution wasn’t practical. I needed a way to accurately map the old Bib numbers to the new Polaris control numbers.

The Solution: Building a Custom Mapping System

To address the problem, I developed a multi-step solution:

  1. Extracting Data from the Horizon System: I created a program that exported all catalog data from Horizon as MARC records—a standardized format for bibliographic data.
  2. Parsing and Storing MARC Data: Using Python, I wrote a script to parse the MARC records, extracting essential identifiers like ISBN, UPC, OCLC, and Title/Author. This data was then stored in a MySQL database.
  3. Matching Records Across Systems: The key challenge was matching old Bib numbers with the new control numbers. I developed an algorithm that used a combination of ISBN, UPC, OCLC, and Title/Author information to generate a confidence score for each potential match. High-confidence matches (e.g., identical ISBNs) automatically updated the MySQL database with the new control numbers, while lower-confidence matches were logged for manual review.
  4. Refining the Matching Algorithm: After an initial run, about 2% of the 330,000 records—roughly 7,000—fell into the low-confidence category. After several iterations and tweaks to the code, I reduced the unresolved matches to about 3,000.

Link Update Process

Once I had a reliable database of Bib numbers matched to Polaris control numbers, I moved to the final stage:

  • PHP Automation: I wrote a PHP script that combed through our internal databases, updating the old Bib-based links to the new Polaris format. This included both our lists database and our Library of Things database.
  • Efficiency: Over 11,000 links were updated automatically, ensuring that everything was ready for the catalog switch on Day One.

The Outcome

By launch day, all links were seamlessly transitioned to the new Polaris system. This proactive solution avoided potential user frustration, keeping the library’s online resources accessible without interruption.

The project not only solved an immediate problem but also highlighted the importance of robust data management and proactive development in library technology.

Takeaway: This project showcased the power of custom programming to solve large-scale problems efficiently. With a combination of Python for data parsing, MySQL for data storage, and PHP for automation, the transition was successful and on schedule.


Posted

in

, , , ,

by