ritterg / sru-ao
用于实现archivesonline.org使用的SRU接口的辅助包
Requires
- php: ^7.2.5
Requires (Dev)
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-09-12 13:01:53 UTC
README
SRU-AO 是一个PHP & Laravel包,用于简化实现与archives-online.org兼容的SRU接口到您的档案数据库。
- 将archives-online.org查询传递给SruQuery::getQueryParams函数,它将解析查询并返回一个字段和运算符的数组。
- 将查询结果数组传递给SruResponse::composeSruResponse函数,它将返回一个格式化且有效的XML响应,您可以使用它来响应archives-online.org的查询。
软件需求
- Composer
安装步骤
只需在您的项目中要求ritterg/sru-ao
composer require ritterg/sru-ao
- 通过运行测试
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)。有关更多信息,请参阅许可文件。