PHP Conference Japan 2024

yaz_sort

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

yaz_sortЗадаёт критерий сортировки

Описание

yaz_sort(resource $id, string $criteria): void

Функция задаёт критерий сортировки и включает сортировку по Z39.50.

Эта функция должна быть вызвана до yaz_search(). Вызов этой функции отдельно не имеет никакого смысла. Когда она используется совместно с yaz_search(), параметры сортировки будут отосланы после поискового запроса и до того, как какая-либо запись будет получена по Z39.50 (yaz_present()).

Список параметров

id

Дескриптор соединения, возвращаемый yaz_connect().

criteria

Строка, принимающая вид поле1 флаг1 поле2 флаг2, где поле1 устанавливает первый атрибут сортировки, поле2 - второй и т.д.

Поле может определяться либо как числовая комбинация, состоящая из пары тип=значение и разделяемое запятой (например, 1=4,2=1), либо как строковый параметр (например, title). Флаг представляет собой последовательность символов, которая не может быть разделена пробелом.

Флаги сортировки
a

Сортировка по возрастанию

d

Сортировка по убыванию

i

Сортировка без учёта регистра символов

s

Сортировка с учётом регистра символов

Возвращаемые значения

Функция не возвращает значения после выполнения.

Примеры

Пример #1 Критерии сортировки

Чтобы отсортировать записи по заголовку, без учёта регистра по возрастанию следует использовать следующий критерий:

1=4 ia

Если второй критерий сортировки должен идти по автору с учётом регистра и по возрастанию, критерий будет выглядеть как:

1=4 ia 1=1003 sa

Добавить

Примечания пользователей 1 note

up
1
peter at NOSPAMimtc dot gatech dot edu
20 years ago
This information is located in several places in the documentation, but takes awhile to find.

yaz_sort() only works for fields that have an associated sort register. Failure to link a sort register will generate the error "Cannot sort according to sequence".

The sort register is created in the default.idx file and referenced in the *.abs file. This is the sort register setting in default.idx:

...
# Sort register (no mapping at all)
sort s
completeness 1
charmap string.chr
...

In the above code the "s" register is setup as the sort register. Charmap string.chr defines the string conversion for diacritics.

This is the reference to the sort index in the *abs file:

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

In the above line the "!:s" causes a sort register to be created for the field.

Once the above changes have been made, reindex all the source records and restart the server. Check for a "sort<fieldid>-0.mf" file in the zebra data directory to verify operation. yaz_sort() should now work properly.
To Top