Пошук/Отримання через URL
Пошук/Отримання через URL (SRU — Search/Retrieve via URL) — стандартизований протокол пошуку для запитів пошуку в Інтернет, використовуючи універсальну мову запитів CQL en:Common Query Language. SRU є технічним стандартом для бібліотек, запропонованим в рамках ініціативи „Z39.50 International Next Generation“ (ZING) для створення сучасного варіанту протоколу Z39.50. Пов’язані з SRU технології засновані на відомих інтернет-стандартах, таких як XML та URI, що широко поширені й поза межами бібліотек на відміну від Z39.50. До стандартів відносяться:
- SRW (Пошук/отримання з Інтернет (Search/Retrieve for the Web));
- CQL (Універсальна мова запитів (Common Query Language));
- ZOOM (Об’єктно орієнтована модель Z39.50 (Z39.50 Object Orientation Model));
- ez3950 та ZeeRex.
Проблеми, які необхідно було вирішити
Існує чимало пошукових систем та баз даних. Кожен з цих рушіїв має різні форми та параметри при створенні запитів. Наприклад, нижче подані пошукові запити за «Search/Retrieve via URL» у трьох пошукових системах Інтернету:
- http://www.google.com/search?q=Search%2FRetrieve+via+URL
- http://www.search.yahoo.com/search;p=Search%2FRetrieve+via+URL
- http://buscar.hispavista.com/?cadena=Search%2FRetrieve+via+URL&Submit=Buscar&str=Search%2FRetrieve+via+URL
Хоча запити одні й ті ж, синтаксис, що використовується для реалізації пошуку, неоднаковий. Понадто, структура відповідей несхожа. SRU прагне виправити це з використанням спеціального синтаксису для запитів та спеціального формату при поверненні результатів пошуку. Це дозволить людям шукати в інтернеті ефективніше.
Інструкції
Для пошуку у базах даних, протокол SRU передбачає використання трьох різних інструкцій:
Explain
Scan
SearchRetrieve
Explain
Операція «Explain» запитує загальну інформацію про сервер бази даних та його функціональність. Принаймні, відповіді повинні містити розташування сервера, опис вмісту й функціональності та який протокол підтримує сервер. За реалізацією SRU, порожній рядок інтерпретується як тип операції «Explain». Якщо операція не вказана, необхідно також додати параметр використовуваної версії SRU. Тому наступні два рядки операції «Explain» мають зміст:
- http://example.org/
- http://example.org/?operation=explain&version=1.1
У цьому випадку сервером повертається такий XML:
<explainResponse>
<version>1.1</version>
<record>
<recordSchema>{{format ref}} http://explain.z3950.org/dtd/2.0/</recordSchema>
<recordPacking>xml</recordPacking>
<recordData>
<explain>
<serverInfo>
<host>example.org</host>
<port>80</port>
<database>/</database>
</serverInfo>
<databaseInfo>
<title>Exemple SRU</title>
<description lang='en' primary='true'>
Aquest es un exemple de base de dades SRU
</description>
</databaseInfo>
<indexInfo>
<set identifier='info:srw/cql-context-set/1/dc-v1.1' name='dc' />
<index>
<title>title</title>
<map>
<name set='dc'>title</name>
</map>
</index>
</indexInfo>
<schemaInfo>
<schema identifier='info:srw/schema/1/dc-v1.1'
sort='false' name='dc'>
<title>Dublin Core</title>
</schema>
</schemaInfo>
<configInfo>
<default type='numberOfRecords'>9999</default>
</configInfo>
</explain>
</recordData>
</record>
</explainResponse>
У відповідь сервер повідомляє нам, що база даних розміщена на сайті «example.org», містить інформацію про приклад на SRU і Ви можете отримати різні 9999 записів.
Scan
За цією інструкцією сервер повертає список з кількістю знайдених записів у базі даних. До інструкції „scan“ необхідно також додати змінну „scanClause“, що містить об’єкт пошуку та змінну „version“ з використовуваною версією SRU. Таким чином, запит, щоб дізнатися, скільки записів є в базі даних з входженням „SRU“ може виглядати так:
- http://example.org/?operation=scan&scanClause=SRU&version=1.1
Відповідь сервера:
<scanResponse>
<version>1.1</version>
<terms>
<term>
<value>SRU</value>
<numberOfRecords>3</numberOfRecords>
</term>
</terms>
</scanResponse>
У цьому випадку, сервер повідомив нам, що є 3 записи, що стосуються запиту „SRU“.
SearchRetrieve
Це найважливіша операція протоколу. У відповідь на операцію SearchRetrieve отримуються записи, які запитуються зі сервера. Запити можуть бути у формі простого тексту чи ж бути поєднаннями булевих функцій. У цьому випадку до операції „searchRetrieve“ необхідно додати принаймні змінну „query“ для запиту та змінну „version“ для номера версії.
- http://example.org/?operation=searchRetrieve&query=SRU&version=1.1
Відповідь сервера буде структурована у вигляді простого тексту або XML, як показано нижче:
<searchRetrieveResponse>
<version>1.1</version>
<numberOfRecords>3</numberOfRecords>
<records>
<record>
<recordSchema>info:srw/schema/1/dc-v1.1</recordSchema>
<recordPacking>xml</recordPacking>
<recordData>
<dc>
<title>SRU a la "Library of Congres"</title>
<identifier>http://example.org/library.html</identifier>
</dc>
</recordData>
</record>
<record>
<recordSchema>info:srw/schema/1/dc-v1.1</recordSchema>
<recordPacking>xml</recordPacking>
<recordData>
<dc>
<title>Sintaxi de SRU</title>
<identifier>http://example.org/sintaxi.html</identifier>
</dc>
</recordData>
</record>
<record>
<recordSchema>info:srw/schema/1/dc-v1.1</recordSchema>
<recordPacking>xml</recordPacking>
<recordData>
<dc>
<title>Exemples SRU</title>
<identifier>http://example.org/exemple.html</identifier>
</dc>
</recordData>
</record>
</records>
</searchRetrieveResponse>
SRW
Ключовим компонентом цієї ініціативи ZING є протокол Пошуку/отримання у веб-службах (SRW, Search/Retrieve Web Service), що дозволяє виконувати аналогічні до Z39.50 запити через HTTP за допомогою простих запитів HTTP GET, або ж за протоколом SOAP. Запити формулюються на мові запитів CQL а результати отримуються у вигляді XML.
SRU
SRU пропонує менше можливостей аніж SRW, немає SOAP і, отже, значно компактніше.
Див. також
Зовнішні посилання
- Пошук/отримання через URL на Бібліотеці Конгресу
- Список розсилання „SRU implementors“
- Епспериментальний портал SRU[недоступне посилання з липня 2019]
- Сторінка щодо ZING (Indexdata)
- Perl-модуль для SRU
- Perl-модуль для CQL
Посилання
- Документація з Koha. Глава 17. Використання сервера SRU. Архів оригіналу за 26 червня 2013. Процитовано 28 травня 2012.