2024年PHP日本大会

yaz_sort

(PHP 4 >= 4.0.7, PECL yaz >= 0.9.0)

yaz_sort设置排序条件

描述

yaz_sort(资源 $id, 字符串 $criteria): void

此函数设置排序条件并启用Z39.50排序。

yaz_search()之前调用此函数。单独使用此函数没有任何效果。当与yaz_search()结合使用时,将在收到搜索响应后且在使用Z39.50 Present (yaz_present())检索任何记录之前发送Z39.50排序。

参数

id

yaz_connect()返回的连接资源。

criteria

一个字符串,其形式为field1 flags1 field2 flags2,其中field1指定排序的主要属性,field2次要属性,等等。

字段指定数值属性组合(由逗号分隔的type=value对,例如1=4,2=1);或者字段可以指定一个简单的字符串条件(例如title)。标志是一系列以下字符,这些字符之间不能用任何空格分隔。

排序标志
a

升序排序

d

降序排序

i

不区分大小写的排序

s

区分大小写的排序

返回值

不返回值。

示例

示例 #1 排序条件

要按Bib1属性标题进行排序,不区分大小写,升序,可以使用以下排序条件:

1=4 ia

如果次要排序条件应该是作者,区分大小写,升序,则使用:

1=4 ia 1=1003 sa

添加注释

用户贡献的注释 1 条注释

peter at NOSPAMimtc dot gatech dot edu
20年前
此信息位于文档中的多个位置,但需要一段时间才能找到。

yaz_sort() 只适用于具有关联排序寄存器的字段。未能链接排序寄存器将生成错误“无法根据序列排序”。

排序寄存器在default.idx文件中创建,并在*.abs文件中引用。这是default.idx中的排序寄存器设置:

...
# 排序寄存器(根本没有映射)
sort s
completeness 1
charmap string.chr
...

在上面的代码中,“s”寄存器被设置为排序寄存器。Charmap string.chr 定义了带变音符号的字符串转换。

这是*abs文件中对排序索引的引用:

...
elm (2,1) title !:w,!:p,!:s
...

在上面的行中,“!:s”导致为该字段创建一个排序寄存器。

完成上述更改后,重新索引所有源记录并重新启动服务器。检查zebra数据目录中的“sort-0.mf”文件以验证操作。yaz_sort()现在应该可以正常工作了。
To Top