Skip to main content
ExLibris
  • Subscribe by RSS
  • Ex Libris Knowledge Center

    How Remote Search Works

    This information is not applicable to Primo VE environments. For more details on Primo VE configuration, see Primo VE.
    The following steps describe the workflow:
    1. Primo translates the user’s query into the query that will be sent to the MetaLib X-server. Primo makes some modifications to the query (see below for details).
    2. Primo connects to the MetaLib API and sends the query specifying the QuickSet that is defined for active search scope. Then, using the find_group_info and present services, it requests the results of the MetaLib search (in blocks of 10 records). This will happen until all the results have been retrieved or the timeout has been reached. The timeout is defined in seconds in the Advanced Wizards > General Configuration > Remote Search section of the Back Office.
    3. The records are indexed and deduped. The records and indexes are stored in memory.
    4. If the search scope includes both local and remote scopes, Primo queries and retrieves the records from the local repository. These records are merged with the remote search records, indexed, and deduped.
      If the results from a remote site are not in the MetaLib data format, Primo displays a link in the Additional Results section, which opens a new window and displays the results of the search at the remote site:
      UnformattedMetaLibResults.gif
      Additional Results Section in Brief Results
    5. The user’s original query is invoked on the indexes created in Steps 3 and 4.
    If a user selects a facet, the system re-invokes step 5 with the additional filter.
    If a user clicks on a hyperlinked field (author/subject) in the full record display, a new query is sent to MetaLib.
    If a user places a remote search record in the e-Shelf and/or creates tags or reviews for remote search records, these records are stored in the Primo database in a separate table from the records that are loaded via the publishing pipe. Since remote search records do not always have a unique and persistent ID, the ID of the saved records is based on its dedup vector. For articles, this is the ISSN, DOI, or journal title; the start page or author; the publication year, issue, or part; and the brief title. For books, this is the ISBN and brief title. For journals, this is the ISSN and brief title. Since the data may not always be available in the record, dedup will not always work, leaving some duplication in the saved remote search records.
    The saved remote search records are not retrieved together with local records. The sole exception is a search by tags in which both local and remote records that were tagged are retrieved.

    User Authorization

    MetaLib, not Primo, determines whether a user has access to resources based on the definitions in the MetaLib KnowledgeBase. In addition, the access status that displays next to the remote search scopes in the Primo user interface is based on information received from MetaLib.
    For signed-in users, Primo passes the pds_handle, which MetaLib uses to retrieve authorization information from PDS and assign user authorizations as if users had signed in directly to MetaLib.
    For non-signed users, Primo passes the user’s IP to MetaLib, which MetaLib uses to assign user authorizations as defined in MetaLib’s default_z312 table to provide the same authorization as if the users had searched via MetaLib’s user interface. MetaLib uses the user’s IP address, which is always passed by Primo to the MetaLib API, to assign authorizations based on the IP filter groups that have been defined.

    Normalizing the User's Query

    Primo normalizes the user’s query so that it is compatible with MetaLib’s search syntax. The following changes are made:
    • Field filters are translated as follows:
      • Anywhere -> WRD
      • Author -> WAU
      • Title ->WTI
      • Subject -> WSU
      • Anything else is sent as WRD
    • If the user selects the exact phrase search type, the query is encased in double quotes.
    • If the user selects a data range (in the advanced search), MetaLib drops the date because it does not support this type of search.