# Search/Retrieve via URL (SRU) SRU steht für Search/Retrieve via URL. Über SRU-Schnittstellen können gezielt bestimmte Indizes im jeweiligen System nach bestimmten Begriffen durchsucht werden. Einen guten Einstieg in SRU bietet Wikipedia. Details zum SRU-Standard liefert die offizielle Dokumentation der Library of Congress. ## Explain-Operation Mit der Explain-Operation werden Informationen zu Abfragemöglichkeiten angezeigt: ?operation=explain Beispiel:
https://uzb.swisscovery.slsp.ch/view/sru/41SLSP_UZB?version=1.2&operation=explain Unter dem XML-Tag \ werden die Namen der durchsuchbaren Indices gelistet. Pro Index wird ausgewiesen, welche sogenannten *Relation Operators* erlaubt sind. Beispiel:     dc:title             dc_title                 all         =         ==             Unter dem Tag \ sind die verfügbaren Metadatenformate aufgelistet. Aus dem untenstehenden Beispiel geht hervor, dass die betreffende SRU-Schnittstelle z.B. mit recordSchema=dc abgefragt werden kann, um Metadaten im Dublin Core Format zurückzubekommen.                                 ## searchRetrieve-Operation Für die eigentliche Suchabfrage wird die searchRetrieve-Operation genutzt: ?operation=searchRetrieve ### Contextual Query Language (CQL) Suchanfragen werden in der Contextual Query Language (CQL) formuliert. Mithilfe von Booleschen Operatoren (and, or, not) können komplexe Abfragen erstellt werden. Spezielle Zeichen wie Leerschläge und Anführungszeichen müssen URL-encoded werden. Beispiele: %20 Leerschlag %22 Anführungszeichen %3D Gleichheitszeichen %2F Forward slash %3A Doppelpunkt %2E Punkt %2D minus Für das URL-Encoding kann z.B. auch dieses Online-Tool genutzt werden: https://urlencoder.org. ### Durch Resultatseiten blättern Bei einer Query wird jeweils nur eine Teilmenge der Treffer direkt zurückgeliefert. Dies ist serverseitig definiert - oft sind es 10 Records, sozusagen die erste Resultatseite. Die absolute Anzahl Treffer kann aus dem Tag \ herausgelesen werden. Beispiel: 629 Im Element \ kann überprüft werden, welches Record als nächstes kommt. Mit dieser Zahl kann die nächste Resultatseite aufgerufen werden, indem der startRecord-Parameter an die vorangegangene Suche angehängt wird. Beispiel: https://uzb.swisscovery.slsp.ch/view/sru/41SLSP_UZB?version=1.2&operation=searchRetrieve&recordSchema=dc&query=alma.title=python&startRecord=11