PHP Conference Japan 2024

yaz_sort

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

yaz_sort設定排序條件

說明

yaz_sort(資源 $id, 字串 $criteria):

此函數設定排序條件並啟用 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<fieldid>-0.mf」檔案以驗證操作。yaz_sort() 現在應該可以正常運作了。
To Top