Пошук/Отримання через URL

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Пошук/Отримання через URL (SRU — Search/Retrieve via URL) — стандартизований протокол пошуку для запитів пошуку в Інтернет, використовуючи універсальну мову запитів CQL. 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 передбачає використання трьох різних інструкцій:

  1. Explain
  2. Scan
  3. 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 і, отже, значно компактніше.

Див. також[ред. | ред. код]

Зовнішні посилання[ред. | ред. код]

Посилання[ред. | ред. код]

  1. Документація з Koha. Глава 17. Використання сервера SRU. Архів оригіналу за 26 червня 2013. Процитовано 28 травня 2012.