Filtry

Pro záznamy stahované prostřednictvím Z39.50 klienta je možno nastavit předzpracování v podobě filtrů. Filtr obecně může provést se záznamem cokoliv ale většinou se bude jednat o smazání nežádoucích nebo doplnění vlastních polí.

Nastavení

Filtr se nastavuje pomocí klíčů [KATALOGIZACE]ZFILTER_DOK a [KATALOGIZACE]ZFILTER_AUT. Obsahem klíče je potom název filtru, spolu s parametry, které budou dále popsány.

FiltrCizojazycneEkvivalenty(seznam_poli)

Filtr je speciálně určen pro mazání cizojazyčných ekvivalentů u autorit stahovaných z NK. Vstupním parametrem je seznam čísel polí, kde se má provádět kontrola. Pokud libovolné z těchto polí obsahuje podpole $2 s obsahem "eczenas", tak je takové pole ze záznamu odstraněno.

Příklad definice

FiltrCizojazycneEkvivalenty(650,651,653,655,750)

Zapne kontrolu v polích 650,651,655 a 750 a pokud pole obsahuje anglický ekvivalent, je ze záznamu odstraněno.

FiltrMazani(seznam_poli)(filtr_obsah)

Obecný filtr pro mazání polí na základě splnění podmínky. Vstupem je jednak seznam polí, která se budou kontrolvat a poté podmínka při jejímž splnění se pole ze záznamu odstraní.

Dostupné podmínky pro filtrování polí jsou tyto:

O(regexp)
OP(podpole, regexp)
And(podminky)
Or(podminky)
Not(podminky)

První dvě podmínky jsou testy na obsah celého pole. První bere regulární výraz a pokud mu vyhoví obsah celého pole (podpole jsou oddělena znakem dolar), provede se odstranění pole. Druhá podmínka bere navíc jako parametr označení podpole, ve kterém se bude kontrolovat. Oproti první podmínce tedy kontrole nepodléhá celé pole ale jen konkrétní podpole.

Pokud je potřeba uplatnit více podmínek, je možné je spojit pomocí logických operátorů které představují další tři filtry.

Lépe to osvětlí příklady.

FiltrMazani(650,651,653,655,750)(OP(2, "ezenas")) - odpovídá filtru FiltrCizojazycneEkvivalenty (ale je pomalejší)
FiltrMazani(100,100)(Or(OP("a", "Božena"), OP("a", "Němcová"))) - pokud podpole $a v polich 100 nebo 110 obsahují slova Božena nebo Němcová, je takové pole odstraněno    
FiltrMazani(100)(And(Or(OP("a", "Karel"), OP("a", "Havlíček")), Not(OP("a", "Borovský")))) - pokud podpole 100^a obsahuje slova "Karel" nebo "Havlíček" a zároveň neobsahuje slovo "Borovský" tak je celé pole odstraněno