[Koha-cvs] koha/C4 SearchMarc.pm [rel_2_2]

Thomas D koha at alinto.com
Sat Feb 18 09:41:45 CET 2006


CVSROOT:	/sources/koha
Module name:	koha
Branch: 	rel_2_2
Changes by:	Thomas D <thd at savannah.gnu.org>	06/02/18 08:41:44

Modified files:
	C4             : SearchMarc.pm 

Log message:
	Synchronised getMARCsubjects in rel_2_2 with HEAD.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/koha/C4/SearchMarc.pm.diff?only_with_tag=rel_2_2&tr1=1.36.2.21&tr2=1.36.2.22&r1=text&r2=text

Patches:
Index: koha/C4/SearchMarc.pm
diff -u koha/C4/SearchMarc.pm:1.36.2.21 koha/C4/SearchMarc.pm:1.36.2.22
--- koha/C4/SearchMarc.pm:1.36.2.21	Wed Dec 14 15:58:23 2005
+++ koha/C4/SearchMarc.pm	Sat Feb 18 08:41:44 2006
@@ -589,7 +589,22 @@
 		$mintag = "600";
 		$maxtag = "699";
 	}
-	my $sth=$dbh->prepare("SELECT subfieldvalue,subfieldcode,tagorder,tag FROM marc_subfield_table WHERE bibid=? AND tag BETWEEN ? AND ? ORDER BY tagorder,subfieldorder");
+	my $sth=$dbh->prepare("SELECT `subfieldvalue`,`subfieldcode`,`tagorder`,`tag` FROM `marc_subfield_table` WHERE `bibid`= ? AND `subfieldcode` NOT IN ('2','4','6','8') AND `tag` BETWEEN ? AND ? ORDER BY `tagorder`,`subfieldorder`");
+	# Subfield exclusion for $2, $4, $6, $8 protects against searching for
+	# variant data in otherwise invariant authorised subject headings when all
+	# returned subfields are used to form a query for matching subjects.  One
+	# example is the use of $2 in MARC 21 where the value of $2 changes for
+	# different editions of the thesaurus used, even where the subject heading
+	# is otherwise the same.  There is certainly a better fix for many cases
+	# where the value of the subfield may be parsed for the invariant data.  
+	# More complete display values may also be separated from query values
+	# containing only the actual invariant authorised subject headings.  More
+	# coding is required for careful value parsing, or display and query
+	# separation; instead of blanket subfield exclusion.
+	# 
+	# As implemented, $3 is passed and might still pose a problem.  Passing $3
+	# could have benefits for some proper use of $3 for UNIMARC, however, might
+	# restrict query usage to a given material type.  -- thd
 
 	$sth->execute($bibid,$mintag,$maxtag);
 
@@ -615,11 +630,14 @@
 		}
 		if ($subfieldcode eq 9) {
 			$field9=$subfieldvalue;
+		} elsif ($subfieldcode eq (3 || 5)) {
+			$subject .= $subfieldvalue . " ";
 		} else {
-			$subject .= $subfieldvalue." -- ";
+			$subject .= $subfieldvalue . " -- ";
 		}
 		$activetagorder=$tagorder;
 	}
+	$subject=~ s/ -- $//;
 	$marcsubjct = {MARCSUBJCT => $subject,
 					link => $lasttag."9",
 					linkvalue => $field9,





More information about the Koha-cvs mailing list