improving fingerprinter -- taking language into account, adding fixed field extractor
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 30 Jun 2006 17:07:14 +0000 (17:07 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 30 Jun 2006 17:07:14 +0000 (17:07 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@4866 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/javascript/backend/catalog/biblio_fingerprint.js
Open-ILS/src/javascript/backend/catalog/record_type.js

index 3b76585..cb80059 100644 (file)
@@ -125,6 +125,12 @@ if (marcdoc.datafield.(@tag == '039').subfield.(@code == 'b').toString().match(/
        log_debug( 'got Local source bump' );
 }
 
+if (extractFixedField(marcdoc, 'Lang') == 'eng') {
+       quality *= 2;
+       log_debug( 'got language bump for ' + extractFixedField(marcdoc, 'Lang') );
+}
+
+
 // XXX this has to be a string ... for now. JS::SM limitation
 result.quality = '' + parseInt( '' + quality );
 
index 388b417..61d3c34 100644 (file)
@@ -282,3 +282,37 @@ function recordType (rec) {
        }
 }
 
+function extractFixedField (rec, field) {
+
+       var marcns = new Namespace("http://www.loc.gov/MARC21/slim");
+       var _l = rec.marcns::leader.toString();
+       var _8 = rec.marcns::controlfield.(@tag.match(/008/)).text().toString();
+       var _6 = rec.marcns::controlfield.(@tag.match(/006/)).text().toString();
+       var _7 = rec.marcns::controlfield.(@tag.match(/007/)).text().toString();
+
+       var rtype = recordType(rec);
+
+       var val;
+
+       if (ff_pos[field].ldr) {
+               val = _l.substr(
+                       ff_pos[field].ldr[rtype].start,
+                       ff_pos[field].ldr[rtype].len
+               );
+       } else if (ff_pos[field]._8) {
+               val = _8.substr(
+                       ff_pos[field]._8[rtype].start,
+                       ff_pos[field]._8[rtype].len
+               );
+       }
+
+       if (!val && ff_pos[field]._6) {
+               val = _6.substr(
+                       ff_pos[field]._6[rtype].start,
+                       ff_pos[field]._6[rtype].len
+               );
+       }
+               
+       return val;
+}
+