ritterg/sru-ao

用于实现archivesonline.org使用的SRU接口的辅助包

v1.0.1 2021-09-02 13:56 UTC

This package is auto-updated.

Last update: 2024-09-12 13:01:53 UTC


README

Latest Stable Version License Gerold Ritter

SRU-AO 是一个PHP & Laravel包,用于简化实现与archives-online.org兼容的SRU接口到您的档案数据库。

  • 将archives-online.org查询传递给SruQuery::getQueryParams函数,它将解析查询并返回一个字段和运算符的数组。
  • 将查询结果数组传递给SruResponse::composeSruResponse函数,它将返回一个格式化且有效的XML响应,您可以使用它来响应archives-online.org的查询。

软件需求

  • Composer

安装步骤

只需在您的项目中要求ritterg/sru-ao

  1. composer require ritterg/sru-ao
  2. 通过运行测试 phpunit 确保一切正常

用法

SruQuery

archives-online.org SRU查询采用特殊格式,例如 https://server.tld/SRU?operation=searchretrieve&version=1.2&query=Serverchoice%20all%20%22Switzerland%20Germany%22%20AND%20isad.date%20WITHIN%20%221000%202000%22&maximumRecords=50 SruQuery类可以帮助您解析此查询。

use Ritterg\SruAo\SruQuery;

$sruquery = new SruQuery;
$searchparams = $sruquery->getQueryParams($request, $allowedfields = null, $allowedoperators = null);

$searchparams 将是一个包含从sru查询中所有清洗和重命名的查询参数的数组。

参数

$request 是来自查询的输入参数数组(即 $_GET)。

$allowedfields 是允许查询字段及其应重命名的字符串的数组。默认值如下

$allowedfields = [
	'Serverchoice' => 'fulltext', 
	'isad.reference' => 'reference', 
	'isad.title' => 'title', 
	'isad.date' => 'date', 
];

$allowedoperators 是允许的运算符及其应重写的字符串的数组。默认值如下

$allowedoperators = [  
	'all' => 'AND',  
	'any' => 'OR',  
	'adj' => 'ADJ',  
	'=' => 'LIKE',  
	'==' => 'LIKE',  
	'===' => '=',  
	'WITHIN' => '='  
];

您可以使用最适合您数据库的值覆盖这些默认值

结果

结果是一个包含所有查询参数的数组。对于每个参数,还有一个包含值和运算符的数组。

对于上述查询,结果将是

$searchparams = [
  "fulltext" => [
    "value" => "Switzerland Germany"
    "operator" => "AND"
  ]
  "date_start" => [
    "value" => "1000-01-01"
    "operator" => ">="
  ]
  "date_end" => [
    "value" => "2000-12-31"
    "operator" => "<="
  ]
  "limit" => 50
]

使用这些参数构建您的数据库查询。

SruResponse

use Ritterg\SruAo\SruQuery;

$sruresponse = new SruResponse;
$xml = $sruresponse->composeSruResponse($results, $totalcount, $keys);

$xml 将是一个适合返回给archives-online.org的XML字符串。

参数

$results 是您想要发送到archives-online.org的记录数组。

archives-online.org每条记录有13个字段

  • reference: 档案单位的参考/签名
  • title: 档案单位的标题
  • date: 档案单位的日期字符串
  • descriptionlevel: 档案单位的描述级别
  • extent: 档案单位的范围/大小/数量
  • creator: 档案单位的创建者/作者
  • score: 记录与搜索查询的相关性(0 - 1)
  • link: 档案单位详细页面的直接链接
  • beginDateISO: 档案单位ISO格式的开始日期 YYYY-MM-DD
  • beginApprox: 如果开始日期是近似的,则为true,如果是确切的,则为false
  • endDateISO: 档案单位ISO格式的结束日期 YYYY-MM-DD
  • endApprox: 如果结束日期是近似的,则为true,如果是确切的,则为false
  • hasDigitizedItems: 如果档案单位有附带的数字化项,则为true,否则为false(此字段为可选)

$totalcount 是您数据库中的总结果数。
SRU查询包含一个参数 "maximumRecords",表示应返回多少结果。如果您的查询有更多结果,您可以在 $totalcount 中返回总结果数。

$keys 是一个替代数组键的数组。如果您的结果数组中的键与标准SRU键不同,您可以添加一个键数组来匹配您的键与标准键。

例如,如果您在结果数组中有德语键,则$keys数组可能如下所示

$keys = [
'reference' => 'signatur',
'title' => 'titel',
'date' => 'datum',
'descriptionlevel' => 'stufe',
'extend' => 'umfang',
'creator' => 'autor',
'score' => 'relevanz',
'link' => 'url',
'beginDateISO' => 'anfangsdatum',
'beginApprox' => 'anfangca',
'endDateISO' => 'enddatum',
'endApprox' => 'endca',
'hasDigitizedItems' => 'digitalisate',
];

请使用 https://archives-online.org/srutest 检查您的XML响应

测试

要运行测试,请在项目文件夹中运行以下命令。

$ ./vendor/bin/phpunit

链接

致谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅许可文件