Uploaded image for project: 'mod-search'
  1. mod-search
  2. MSEARCH-307

BE - Normalize ISBNs for ISBN searching. Search option: Identifier (all) in the Instance segment

    XMLWordPrintable

Details

    • Spitfire
    • Morning Glory (R2 2022)

    Description

      Overview: ISBN, normalized is implemented as a dedicated search option, UIIN-647, which supports searching by ISBN when those are being entered in a variety of ways (e.g. strip any internal punctuation (usually hyphens)), no matter which version is in the Instance Resource identifier element:

      This story here is about implementing the same normalization of ISBNs when search using search option Identifier (all) in the Instance segment.

      Scenarios:
      Assume the following instance records exist

      Example ISBN Invalid ISBN
      1 978-92-8011-565-9  
      2 9789280115659  
      3 978 92 8011 565 9  
      4 978-92-8011-565-9 (pbk.)  
      5 978-92-8011-5659(pbk.)  
      6 978 92 8011 5659(pbk.)  
      7 92801156507  
      8 9280115650 (pbk.)  
      9   9789280115669
      10   978-92-8011-566-9
      11   978 92 8011 566 9
      12   978 92 8011 566 9(hardcover)
      1. Scenario
        • Login to FOLIO Snapshot, go to Inventory, Search & filter pane, and select Instance segment
        • When a user wants to search on ISBN then following search options are in focus of this story:
          • Identifier (all)
      2. Scenario
        • When searching on ISBN (Resource Identifier)
        • Then search are conducted across following elements:
          • Resource identifier type: ISBN
          • Resource identifier type: Invalid ISBN
      3. Scenario
        • ensure following normalizations are covered:
          • with and without hyphens
          • with and without spaces
          • with and without qualifiers, like (pbk.), (inb.), (paperback), (vol. 1), (alk. paper) and more
      4. Scenario
        • Ensure automated testing coverage for this new code is 80% plus and confirm with screenshot
      • - - - - - - - - - -

      Requirements:

      1. search in the instance record on both:
        • Resource identifier type: ISBN
        • Resource identifier type: Invalid ISBN
      2. search on ISBN numbers
        • with 10 digits
        • with 13 digits
      3. search on ISBN numbers
        • with qualifier data after the 10/13 digit number
        • without qualifier data after the 10/13 digit number
      4. search on ISBNs with qualifiers
        • preceded by spaces, e.g. 9789280115659 (pbk.)
        • not preceded by spaces. e.g. 978-0-12-3736668-0(CD-ROM)
      5. search on ISBN numbers
        • with hyphens
        • without hyphens
      6. search even ignore eventually spaces in the ISBN
      7. search on ISBN is possible in any of the three segments: Instance, Holdings, Item (see UIIN-758)

      Examples on ISBN searches which will find following instance record (from Bugfest environment (login: folio/folio) - https://bugfest.folio.ebsco.com/inventory/view/0f5983eb-1912-4e88-bcbf-2a8f97b42f5a?query=9789280115659%2A&sort=Title):

      Identifier search option: 9789280115659
      Identifier search option: 9789280115659 (pbk.)
      Identifier search option: 9789280115659(pbk.)
      Identifier search option: 978-92-8011-565-9
      Identifier search option: 978 92 8011 565 9
      Identifier search option: 9280115650
      Identifier search option: 9280115650 (pbk.)
      Identifier* search option: 9789280115669 an invalid ISBN
      Identifier search option: 978-92-8011-566-9 an invalid ISBN

      See also slide deck: https://docs.google.com/presentation/d/1zsgykxOAKSdjikm8Lg56lamAv9u6o7ms1dTIHx1SDnI/edit#slide=id.p
      Out of scope for MVP:
      The RA and MM -SIG discussed the need for search on calculated ISBN. The requirements are not clear, while e.g. SMEs with expertise on Special collection and rare books does not find an automatic conversion between 10 digit and 13 digit ISBNs to be expected behavior.

      TIPS:
      ISBN Utility functionality for the Orders app - see (module/project = ISBNUTIL) https://github.com/folio-org/folio-isbn-util

      Note: if the implementation is based only on RMB-499 (without any ISBN-specific validation, backend nor front-end) it will be possible to find results when searching for partial tokens e.g "978" or "978 92". RMB-499 pull request: https://github.com/folio-org/raml-module-builder/pull/615/files . It uses regexp

      ^([0-9 \t-]*)(.*)
      

      resulting in two chunks. Remove spaces, tabs and hyphens from the first chunk. Now concatenate the two chunks with a space separator; but don't add the space separator if any of the chunks is empty.

      Note: it's possible to add UI validation for user input

      Implementation:

      The front-end need to change the CQL from

      (identifiers =/@value "foo bar") sortby title

      to

      (identifiers =/@value "foo bar" OR isbn = "foo bar" OR invalidIsbn = "foo bar") sortBy title

      This is needed to prevent isbn normalisation in other identifier fields as discussed on RMB-499.

      No back-end work is needed. This is ui-only.

      TestRail: Results

        Attachments

          Issue Links

            Activity

              People

                Unassigned Unassigned
                charlotte Charlotte Whitt
                Charlotte Whitt Charlotte Whitt
                Votes:
                0 Vote for this issue
                Watchers:
                13 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved:

                  TestRail: Runs

                    TestRail: Cases