Modificaciones en BrokerQuery.pl.cgi para Harvest + Dublin Core


Debido a que un metadato llamado DC.Algo contiene un punto hemos de incluirlo entre comillas para hacer que Harvest no tenga problemas. Para ello hay que tocar esta sección del código:

foreach $a (@atts) {
        $attributes .= "#attribute \"$a\" ";
} 

Hemos de inicializar las variables que contienen los valores de los metas con "".

Así prevenimos que un registro encontrado en una búsqueda presente valores del registro anterior si es que no tenía un valor para un determinado campo.

Por ejemplo si encontramos dos documentos y el segundo no posee el campo DC.Description, la salida por pantalla presentaría el valor de ese campo del registro anterior.

Hemos de incluir las siguientes líneas para evitar este efecto:

# 130 - Object Ends, start a new one
#if (/^130/o) {
if (/^130 -/o) {
...

$SOIF{'dc.title'}='';
$SOIF{'dc.creator'}='';
$SOIF{'dc.subject'}='';
$SOIF{'dc.description'}='';
$SOIF{'dc.publisher'}='';
$SOIF{'dc.contributor'}='';
$SOIF{'dc.date'}='';
$SOIF{'dc.type'}='';
$SOIF{'dc.format'}='';
$SOIF{'dc.identifier'}='';
$SOIF{'dc.source'}='';
$SOIF{'dc.language'}='';
$SOIF{'dc.relation'}='';
$SOIF{'dc.coverage'}='';
$SOIF{'dc.rights'}='';

next;
}

También tenemos que cambiar las dos líneas donde aparece /^200/ ya que cuando un campo meta tiene un valor que empieza por 200 se produce un error que hace que esa página no sea mostrada en los resultados.

Todas las páginas creadas en el año 2000 nos darán problemas si tenemos la fecha en el campo meta con este formato:

<META NAME="DC.Date"         CONTENT="2000-03-30">

En vez de buscar "^200" habrá que buscar "^200 -". Los cambios a realizar son:

while ($_ = shift(@T))
{
	chop $_;
	next if (/^$/o);
	print "|$_|\n" if ($debug);

	#next if (/^200/o);
	next if (/^200 -/o);

	if (/^126 -/o || /^120 -/o || /^103 -/o || /^111 -/o)

# 200 - broker protocol version, ignore
#if (/^200/o) {
if (/^200 -/o) {
	next;
}