Slight overhaul of ISBN indexing focused on the translate_isbn1013 function
authordbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 3 Aug 2010 03:14:49 +0000 (03:14 +0000)
committerdbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 3 Aug 2010 03:14:49 +0000 (03:14 +0000)
  * Switch to a PLPERLU function built on Business::ISBN for more robust
    indexing of records with problematic ISBNs; thanks to Jason Stephenson
    <jstephenson@mvlc.org> for the initial implementation

  * Remove the first_word, naco_normalize, and split_date_range normalizers
    from the indexing chain for ISBNs, as these unnecessarily munge the
    ISBNs. We can trust Business::ISBN to determine what is a real ISBN,
    hyphens and all.

  * Index all ISBNs in a given record and generate the corresponding
    ISBN10/ISBN13 variations. Also, fix the checksum if given an ISBN with
    a bad checksum, but be sure to index the original bad-checksum ISBN as
    well.

  * Add a set of 10 MARC records with bad ISBNs (thanks to Jason Stephenson
    again for these) for testing purposes to Open-ILS/tests/datasets

  * Add the Business::ISBN Perl module as a prerequisite to the installer

  * Remove contrib/isn from the PostgreSQL install instructions

git-svn-id: svn://svn.open-ils.org/ILS/trunk@17066 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/extras/Makefile.install
Open-ILS/src/sql/Pg/002.schema.config.sql
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/0357.schema.isbn1013-translation.sql [new file with mode: 0644]
Open-ILS/tests/datasets/README
Open-ILS/tests/datasets/badisbns.xml [new file with mode: 0644]
README

index 7f2ef09..ee29b7d 100644 (file)
@@ -101,6 +101,8 @@ DEBS =  \
 
 # Debian Lenny and Ubuntu Intrepid bundle recent versions of yaz
 EXTRA_DEBS = \
+       libbusiness-isbn-perl\
+       libbusiness-isbn-data-perl\
        libmarc-charset-perl \
        libmarc-xml-perl \
        libnet-z3950-zoom-perl \
@@ -158,6 +160,8 @@ FEDORA_13_RPMS = \
        ncurses-devel \
        ncurses-libs \
        perl-Business-CreditCard \
+       perl-Business-ISBN \
+       perl-Business-ISBN-Data \
        perl-Email-Send \
        perl-GDGraph3d \
        perl-MARC-Record \
@@ -248,6 +252,8 @@ CPAN_MODULES_SAFE = \
 
 # Recent Debian/Ubuntus have libmarc-charset-perl, libmarc-xml-perl, libnet-z3950-zoom-perl
 CPAN_MODULES_MARC = \
+       Business::ISBN \
+       Business::ISBN::Data \
     MARC::Charset \
     MARC::File::XML \
     Net::Z3950::ZOOM
index 17839a5..020b9e4 100644 (file)
@@ -68,7 +68,7 @@ CREATE TABLE config.upgrade_log (
     install_date    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
 );
 
-INSERT INTO config.upgrade_log (version) VALUES ('0356'); -- miker
+INSERT INTO config.upgrade_log (version) VALUES ('0357'); -- dbs
 
 CREATE TABLE config.bib_source (
        id              SERIAL  PRIMARY KEY,
@@ -724,8 +724,58 @@ CREATE OR REPLACE FUNCTION public.split_date_range( TEXT ) RETURNS TEXT AS $func
 $func$ LANGUAGE SQL STRICT IMMUTABLE;
 
 CREATE OR REPLACE FUNCTION public.translate_isbn1013( TEXT ) RETURNS TEXT AS $func$
-        SELECT isbn FROM (SELECT isn_weak(true), $1 || ' ' || REPLACE( CASE WHEN length($1) = 10 THEN isbn13($1)::TEXT WHEN length($1) = 13 THEN isbn($1)::TEXT ELSE '' END, '-', '') AS isbn)x;
-$func$ LANGUAGE SQL STRICT IMMUTABLE;
+    use Business::ISBN;
+    use strict;
+    use warnings;
+
+    # For each ISBN found in a single string containing a set of ISBNs:
+    #   * Normalize an incoming ISBN to have the correct checksum and no hyphens
+    #   * Convert an incoming ISBN10 or ISBN13 to its counterpart and return
+
+    my $input = shift;
+    my $output = '';
+
+    foreach my $word (split(/\s/, $input)) {
+        my $isbn = Business::ISBN->new($word);
+
+        # First check the checksum; if it is not valid, fix it and add the original
+        # bad-checksum ISBN to the output
+        if ($isbn && $isbn->is_valid_checksum() == Business::ISBN::BAD_CHECKSUM) {
+            $output .= $isbn->isbn() . " ";
+            $isbn->fix_checksum();
+        }
+
+        # If we now have a valid ISBN, convert it to its counterpart ISBN10/ISBN13
+        # and add the normalized original ISBN to the output
+        if ($isbn && $isbn->is_valid()) {
+            my $isbn_xlated = ($isbn->type eq "ISBN13") ? $isbn->as_isbn10 : $isbn->as_isbn13;
+            $output .= $isbn->isbn . " ";
+
+            # If we successfully converted the ISBN to its counterpart, add the
+            # converted ISBN to the output as well
+            $output .= ($isbn_xlated->isbn . " ") if ($isbn_xlated);
+        }
+    }
+    return $output if $output;
+
+    # If there were no valid ISBNs, just return the raw input
+    return $input;
+$func$ LANGUAGE PLPERLU;
+
+COMMENT ON FUNCTION public.translate_isbn1013(TEXT) IS $$
+/*
+ * Copyright (C) 2010 Merrimack Valley Library Consortium
+ * Jason Stephenson <jstephenson@mvlc.org>
+ * Copyright (C) 2010 Laurentian University
+ * Dan Scott <dscott@laurentian.ca>
+ *
+ * The translate_isbn1013 function takes an input ISBN and returns the
+ * following in a single space-delimited string if the input ISBN is valid:
+ *   - The normalized input ISBN (hyphens stripped)
+ *   - The normalized input ISBN with a fixed checksum if the checksum was bad
+ *   - The ISBN converted to its ISBN10 or ISBN13 counterpart, if possible
+ */
+$$;
 
 -- And ... a table in which to register them
 
index 9876e41..01bf79a 100644 (file)
@@ -4226,7 +4226,7 @@ INSERT INTO config.index_normalizer (name, description, func, param_count) VALUE
 
 INSERT INTO config.index_normalizer (name, description, func, param_count) VALUES (
        'Extract Dewey-like number',
-       'Extract a string of numeric characters ther resembles a DDC number.',
+       'Extract a string of numeric characters that resembles a DDC number.',
        'call_number_dewey',
        0
 );
@@ -4281,16 +4281,7 @@ INSERT INTO config.metabib_field_index_norm_map (field,norm)
       FROM  config.metabib_field m,
         config.index_normalizer i
       WHERE i.func IN ('naco_normalize','split_date_range')
-            AND m.id NOT IN (19);
-
-INSERT INTO config.metabib_field_index_norm_map (field,norm,pos)
-    SELECT  m.id,
-            i.id,
-            1
-      FROM  config.metabib_field m,
-            config.index_normalizer i
-      WHERE i.func IN ('first_word')
-            AND m.id IN (18);
+            AND m.id NOT IN (18, 19);
 
 INSERT INTO config.metabib_field_index_norm_map (field,norm,pos)
     SELECT  m.id,
diff --git a/Open-ILS/src/sql/Pg/upgrade/0357.schema.isbn1013-translation.sql b/Open-ILS/src/sql/Pg/upgrade/0357.schema.isbn1013-translation.sql
new file mode 100644 (file)
index 0000000..b389bb5
--- /dev/null
@@ -0,0 +1,68 @@
+BEGIN;
+
+INSERT INTO config.upgrade_log (version) VALUES ('0357'); -- dbs
+
+DELETE FROM config.metabib_field_index_norm_map
+    WHERE norm IN (
+        SELECT id 
+            FROM config.index_normalizer
+            WHERE func IN ('first_word', 'naco_normalize', 'split_date_range')
+    )
+    AND field = 18
+;
+
+CREATE OR REPLACE FUNCTION public.translate_isbn1013( TEXT ) RETURNS TEXT AS $func$
+    use Business::ISBN;
+    use strict;
+    use warnings;
+
+    # For each ISBN found in a single string containing a set of ISBNs:
+    #   * Normalize an incoming ISBN to have the correct checksum and no hyphens
+    #   * Convert an incoming ISBN10 or ISBN13 to its counterpart and return
+
+    my $input = shift;
+    my $output = '';
+
+    foreach my $word (split(/\s/, $input)) {
+        my $isbn = Business::ISBN->new($word);
+
+        # First check the checksum; if it is not valid, fix it and add the original
+        # bad-checksum ISBN to the output
+        if ($isbn && $isbn->is_valid_checksum() == Business::ISBN::BAD_CHECKSUM) {
+            $output .= $isbn->isbn() . " ";
+            $isbn->fix_checksum();
+        }
+
+        # If we now have a valid ISBN, convert it to its counterpart ISBN10/ISBN13
+        # and add the normalized original ISBN to the output
+        if ($isbn && $isbn->is_valid()) {
+            my $isbn_xlated = ($isbn->type eq "ISBN13") ? $isbn->as_isbn10 : $isbn->as_isbn13;
+            $output .= $isbn->isbn . " ";
+
+            # If we successfully converted the ISBN to its counterpart, add the
+            # converted ISBN to the output as well
+            $output .= ($isbn_xlated->isbn . " ") if ($isbn_xlated);
+        }
+    }
+    return $output if $output;
+
+    # If there were no valid ISBNs, just return the raw input
+    return $input;
+$func$ LANGUAGE PLPERLU;
+
+COMMENT ON FUNCTION public.translate_isbn1013(TEXT) IS $$
+/*
+ * Copyright (C) 2010 Merrimack Valley Library Consortium
+ * Jason Stephenson <jstephenson@mvlc.org>
+ * Copyright (C) 2010 Laurentian University
+ * Dan Scott <dscott@laurentian.ca>
+ *
+ * The translate_isbn1013 function takes an input ISBN and returns the
+ * following in a single space-delimited string if the input ISBN is valid:
+ *   - The normalized input ISBN (hyphens stripped)
+ *   - The normalized input ISBN with a fixed checksum if the checksum was bad
+ *   - The ISBN converted to its ISBN10 or ISBN13 counterpart, if possible
+ */
+$$;
+
+COMMIT;
index ef88a18..1e13e4f 100644 (file)
@@ -3,6 +3,7 @@ The following table lists the data sets we have collected for testing purposes.
 ^ File name         ^ Format    ^ Encoding ^ Source system ^ Description            ^
 | auth-1066.mrc     | MARC21    | UTF8     | Aleph         | Dutch authority records from IISH (missing 0 in leader 22) |
 | auth-subset100.mrc| MARC21    | UTF8     | Aleph         | Dutch authority records from IISH (missing 0 in leader 22) |
+| badisbns.xml      | MARC21XML | UTF8     |               | 10 records with known bad ISBNs |
 | FSL.marc          | MARC21    | UTF8     | Aleph         | Armenian and Cyrillic scripts, collected from the Fundamental Science Library in Yerevan, Armenia |
 | hebrew.marc       | MARC21    | MARC8    | III           | Hebrew scripts, 25 records |
 | lul_fre_100.marc  | MARC21    | MARC8    | Unicorn GL3.1 | 100 records, French, pre-1923  |
diff --git a/Open-ILS/tests/datasets/badisbns.xml b/Open-ILS/tests/datasets/badisbns.xml
new file mode 100644 (file)
index 0000000..a1c28be
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<collection xmlns="http://www.loc.gov/MARC21/slim">
+<record><leader>00663ncm a2200229Ia 4500</leader><controlfield tag="001">ocm20612671</controlfield><controlfield tag="005">20090604115400.0</controlfield><controlfield tag="008">891108s1989    mnupp    i     n    eng d</controlfield><datafield ind1=" " ind2=" " tag="020"><subfield code="z">HL00361126 :</subfield><subfield code="c">$14.95</subfield></datafield><datafield ind1=" " ind2=" " tag="040"><subfield code="a">TUL</subfield><subfield code="c">TUL</subfield><subfield code="d">UtOrBLW</subfield></datafield><datafield ind1=" " ind2=" " tag="049"><subfield code="a">MRQA</subfield></datafield><datafield ind1=" " ind2=" " tag="092"><subfield code="a">782.421630264</subfield><subfield code="b">S6986 1989</subfield></datafield><datafield ind1="0" ind2="0" tag="245"><subfield code="a">Songs of the 60's :</subfield><subfield code="b">piano, vocal, guitar.</subfield></datafield><datafield ind1=" " ind2=" " tag="260"><subfield code="a">Winona, MN :</subfield><subfield code="b">H. Leonard,</subfield><subfield code="c">c1989.</subfield></datafield><datafield ind1=" " ind2=" " tag="300"><subfield code="a">1 score (175 p.) :</subfield><subfield code="b">ill. ;</subfield><subfield code="c">31 cm.</subfield></datafield><datafield ind1=" " ind2="4" tag="440"><subfield code="a">Decade series</subfield></datafield><datafield ind1=" " ind2=" " tag="500"><subfield code="a">With a preface by Stanley Green.</subfield></datafield><datafield ind1=" " ind2="0" tag="650"><subfield code="a">Popular music</subfield><subfield code="y">1961-1970</subfield></datafield><datafield ind1="0" ind2=" " tag="740"><subfield code="a">Songs of the sixties.</subfield></datafield><datafield ind1=" " ind2=" " tag="830"><subfield code="a">DE (Series)</subfield></datafield><datafield ind1="0" ind2="0" tag="913"><subfield code="a">*SOT60S99000</subfield></datafield></record>
+<record><leader>00631nam a2200217Ii 4500</leader><controlfield tag="001">ocm05702874</controlfield><controlfield tag="005">20080722155500.0</controlfield><controlfield tag="008">791116s1978    wiua   j      000 1 eng d</controlfield><datafield ind1=" " ind2=" " tag="020"><subfield code="z">089542262X295</subfield></datafield><datafield ind1=" " ind2=" " tag="040"><subfield code="a">LSM</subfield><subfield code="c">LSM</subfield><subfield code="d">m.c.</subfield><subfield code="d">UtOrBLW</subfield></datafield><datafield ind1=" " ind2=" " tag="049"><subfield code="a">MRQA</subfield></datafield><datafield ind1=" " ind2=" " tag="092"><subfield code="a">Fic</subfield><subfield code="b">Dic</subfield></datafield><datafield ind1=" " ind2=" " tag="099"><subfield code="a">J</subfield></datafield><datafield ind1="1" ind2=" " tag="100"><subfield code="a">Dickens, Charles,</subfield><subfield code="d">1812-1870</subfield></datafield><datafield ind1="1" ind2="2" tag="245"><subfield code="a">A Christmas carol /</subfield><subfield code="c">by Charles Dickens.</subfield></datafield><datafield ind1=" " ind2=" " tag="260"><subfield code="a">Milwaukee, Wis. :</subfield><subfield code="b">Ideals Pub. Corp.,</subfield><subfield code="c">c1978.</subfield></datafield><datafield ind1=" " ind2=" " tag="300"><subfield code="a">[46] p. :</subfield><subfield code="b">ill. (part col.) ;</subfield><subfield code="c">28 cm.</subfield></datafield><datafield ind1=" " ind2=" " tag="500"><subfield code="a">On cover: Dickens' Christmas carol.</subfield></datafield><datafield ind1="0" ind2=" " tag="740"><subfield code="a">Dickens' Christmas carol.</subfield></datafield><datafield ind1="0" ind2="0" tag="913"><subfield code="a">DICCCAR15000</subfield></datafield></record>
+<record><leader>00882cam a2200277Ma 4500</leader><controlfield tag="001">ocm25104511</controlfield><controlfield tag="005">20090602130300.0</controlfield><controlfield tag="008">830627t19751972onca          000 1 eng d</controlfield><datafield ind1=" " ind2=" " tag="020"><subfield code="z">0553101315175</subfield></datafield><datafield ind1=" " ind2=" " tag="020"><subfield code="a">0553204300</subfield></datafield><datafield ind1=" " ind2=" " tag="020"><subfield code="a">0553268473 (pbk.) :</subfield><subfield code="c">$6.99</subfield></datafield><datafield ind1=" " ind2=" " tag="040"><subfield code="a">TEU</subfield><subfield code="c">TEU</subfield><subfield code="d">MRQ</subfield><subfield code="d">UtOrBLW</subfield></datafield><datafield ind1=" " ind2=" " tag="049"><subfield code="a">MRQA</subfield></datafield><datafield ind1=" " ind2=" " tag="099"><subfield code="a">J</subfield></datafield><datafield ind1="1" ind2=" " tag="100"><subfield code="a">Le Guin, Ursula K.,</subfield><subfield code="d">1929-</subfield></datafield><datafield ind1="1" ind2="4" tag="245"><subfield code="a">The farthest shore /</subfield><subfield code="c">Ursula K. Le Guin ; illustrated by Gail Garraty.</subfield></datafield><datafield ind1=" " ind2=" " tag="250"><subfield code="a">Bantam ed.</subfield></datafield><datafield ind1=" " ind2=" " tag="260"><subfield code="a">Toronto [Ont.] ;</subfield><subfield code="a">New York, N.Y. :</subfield><subfield code="b">Bantam Books,</subfield><subfield code="c">1975, c1972.</subfield></datafield><datafield ind1=" " ind2=" " tag="300"><subfield code="a">197 p. :</subfield><subfield code="b">ill. ;</subfield><subfield code="c">18 cm.</subfield></datafield><datafield ind1=" " ind2="0" tag="440"><subfield code="a">Earthsea trilogy ; Bk. 3.</subfield></datafield><datafield ind1="0" ind2=" " tag="490"><subfield code="a">A Bantam book.</subfield><subfield code="v">10131-5</subfield></datafield><datafield ind1=" " ind2=" " tag="500"><subfield code="a">This is the third of the author's Earthsea trilogy.</subfield></datafield><datafield ind1=" " ind2=" " tag="830"><subfield code="a">Earthsea trilogy ; Bk. 3.</subfield></datafield><datafield ind1=" " ind2=" " tag="830"><subfield code="a">Bantam book</subfield><subfield code="v">10131-5 ;</subfield><subfield code="v">10131-5.</subfield></datafield><datafield ind1="0" ind2="0" tag="913"><subfield code="a">LE*FSHO97000</subfield></datafield></record>
+<record><leader>00624nam a22002050  4500</leader><controlfield tag="001">mrq00398759</controlfield><controlfield tag="003">MAnMC</controlfield><controlfield tag="005">20090602092700.0</controlfield><controlfield tag="008">880222s1947    nyu   a           0 eng d</controlfield><datafield ind1=" " ind2=" " tag="020"><subfield code="z">4980858214bbd :</subfield><subfield code="c">$9.00</subfield></datafield><datafield ind1=" " ind2=" " tag="040"><subfield code="a">MVLC</subfield><subfield code="b">eng</subfield><subfield code="d">UtOrBLW</subfield></datafield><datafield ind1=" " ind2=" " tag="081"><subfield code="a">CTL0210694</subfield></datafield><datafield ind1="1" ind2=" " tag="100"><subfield code="a">Mason, Bernard Sterling,</subfield><subfield code="d">1896-1953</subfield></datafield><datafield ind1="1" ind2="0" tag="245"><subfield code="a">Cabins, cottages and summer homes /</subfield><subfield code="c">by Bernard S. Mason and Frederick H. Kock.</subfield></datafield><datafield ind1=" " ind2=" " tag="260"><subfield code="a">New York :</subfield><subfield code="b">A.S. Barnes,</subfield><subfield code="c">[1947]</subfield></datafield><datafield ind1=" " ind2=" " tag="300"><subfield code="a">168p. :</subfield><subfield code="b">ill., plans ;</subfield><subfield code="c">29 cm.</subfield></datafield><datafield ind1=" " ind2="0" tag="650"><subfield code="a">Log cabins</subfield></datafield><datafield ind1=" " ind2="0" tag="650"><subfield code="a">Cottages</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Kock, Frederic H.,</subfield><subfield code="d">1902-</subfield></datafield><datafield ind1="0" ind2="0" tag="913"><subfield code="a">MASCCAS99000</subfield></datafield></record>
+<record><leader>00684nam a22002410i 4500</leader><controlfield tag="001">mrq00459563</controlfield><controlfield tag="003">MAnMC</controlfield><controlfield tag="005">20090604115300.0</controlfield><controlfield tag="008">840313r19791958nyu   a           f eng c</controlfield><datafield ind1=" " ind2=" " tag="020"><subfield code="z">0440487331pbk.</subfield></datafield><datafield ind1=" " ind2=" " tag="040"><subfield code="a">MVLC</subfield><subfield code="b">eng</subfield><subfield code="d">UtOrBLW</subfield></datafield><datafield ind1="0" ind2="4" tag="050"><subfield code="a">PZ7.P3145</subfield><subfield code="b">To2</subfield></datafield><datafield ind1=" " ind2=" " tag="081"><subfield code="a">CTL0242335</subfield></datafield><datafield ind1=" " ind2=" " tag="099"><subfield code="a">J</subfield></datafield><datafield ind1="1" ind2=" " tag="100"><subfield code="a">Pearce, Philippa</subfield></datafield><datafield ind1="1" ind2="0" tag="245"><subfield code="a">Tom's midnight garden /</subfield><subfield code="c">by A. Philippa Pearce ; illustrated by Susan Linzig. --.</subfield></datafield><datafield ind1=" " ind2=" " tag="260"><subfield code="a">New York :</subfield><subfield code="b">Dell Publishing,</subfield><subfield code="c">1979.</subfield></datafield><datafield ind1=" " ind2=" " tag="300"><subfield code="a">229 p. :</subfield><subfield code="b">ill. --</subfield></datafield><datafield ind1="0" ind2=" " tag="490"><subfield code="a">A Yearling Book</subfield></datafield><datafield ind1=" " ind2=" " tag="500"><subfield code="a">Reprint of 1958 edition.</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Linzig, Susan,</subfield><subfield code="e">ill.</subfield></datafield><datafield ind1=" " ind2=" " tag="830"><subfield code="a">Yearling book</subfield></datafield><datafield ind1="0" ind2="0" tag="913"><subfield code="a">PEATMGA98000</subfield></datafield></record>
+<record><leader>00926nam a2200265Ka 4500</leader><controlfield tag="001">ocm51762602</controlfield><controlfield tag="003">OCoLC</controlfield><controlfield tag="005">20080729125900.0</controlfield><controlfield tag="008">030228s2003    vau           000 0 eng d</controlfield><datafield ind1=" " ind2=" " tag="020"><subfield code="z">JL03022802 set :</subfield></datafield><datafield ind1=" " ind2=" " tag="020"><subfield code="c">$800.00</subfield></datafield><datafield ind1=" " ind2=" " tag="040"><subfield code="a">IJV</subfield><subfield code="c">IJV</subfield><subfield code="d">MRQ</subfield><subfield code="d">UtOrBLW</subfield></datafield><datafield ind1=" " ind2=" " tag="049"><subfield code="a">MRQA</subfield></datafield><datafield ind1=" " ind2=" " tag="092"><subfield code="a">R 332.67</subfield><subfield code="b">S785</subfield></datafield><datafield ind1="0" ind2="0" tag="245"><subfield code="a">Standard &amp; Poor's register of corporations, directors and executives, 2003.</subfield><subfield code="n">v. 2.</subfield></datafield><datafield ind1=" " ind2=" " tag="260"><subfield code="a">New York, N.Y. :</subfield><subfield code="b">Standard &amp; Poor's Corp.,</subfield><subfield code="c">c2003.</subfield></datafield><datafield ind1=" " ind2=" " tag="300"><subfield code="a">3 v. ;</subfield><subfield code="c">29 cm.</subfield></datafield><datafield ind1="0" ind2=" " tag="505"><subfield code="a">v. 2. Directors and Executives.</subfield></datafield><datafield ind1=" " ind2="0" tag="650"><subfield code="a">Directors of corporations</subfield><subfield code="z">United States</subfield><subfield code="v">Directories.</subfield></datafield><datafield ind1=" " ind2="0" tag="650"><subfield code="a">Corporations</subfield><subfield code="z">United States</subfield><subfield code="v">Directories</subfield></datafield><datafield ind1=" " ind2="0" tag="650"><subfield code="a">Executives</subfield><subfield code="z">United States</subfield><subfield code="v">Directories</subfield></datafield><datafield ind1="2" ind2=" " tag="710"><subfield code="a">Standard and Poor's Corporation</subfield></datafield><datafield ind1="1" ind2="0" tag="780"><subfield code="b">[2003 ed.]</subfield><subfield code="t">Standard &amp; Poor's register of corporations, directors and executives, 2003.</subfield></datafield><datafield ind1=" " ind2=" " tag="994"><subfield code="a">X0</subfield><subfield code="b">MRQ</subfield></datafield></record>
+<record><leader>01199pam a2200373 a 4500</leader><controlfield tag="001">ocm69733027</controlfield><controlfield tag="003">OCoLC</controlfield><controlfield tag="005">20070917154400.0</controlfield><controlfield tag="008">060403s2006    enka          001 0 eng  </controlfield><datafield ind1=" " ind2=" " tag="015"><subfield code="a">GBA651402</subfield><subfield code="2">bnb</subfield></datafield><datafield ind1="7" ind2=" " tag="016"><subfield code="a">013480703</subfield><subfield code="2">Uk</subfield></datafield><datafield ind1=" " ind2=" " tag="020"><subfield code="z">978184533213X (hbk.)</subfield></datafield><datafield ind1=" " ind2=" " tag="020"><subfield code="a">184533213X (hbk.)</subfield></datafield><datafield ind1=" " ind2=" " tag="020"><subfield code="a">9781845332136 (hbk.)</subfield></datafield><datafield ind1=" " ind2=" " tag="035"><subfield code="a">(OCoLC)69733027</subfield></datafield><datafield ind1=" " ind2=" " tag="040"><subfield code="a">UKM</subfield><subfield code="c">UKM</subfield><subfield code="d">BAKER</subfield><subfield code="d">CPL</subfield><subfield code="d">VP@</subfield><subfield code="d">QBX</subfield><subfield code="d">BTCTA</subfield><subfield code="d">NZFEP</subfield><subfield code="d">MRQ</subfield></datafield><datafield ind1=" " ind2=" " tag="042"><subfield code="a">ukscp</subfield></datafield><datafield ind1=" " ind2=" " tag="049"><subfield code="a">MRQA</subfield></datafield><datafield ind1=" " ind2="4" tag="050"><subfield code="a">NK4660</subfield><subfield code="b">.M55 2006</subfield></datafield><datafield ind1="0" ind2="4" tag="082"><subfield code="a">738.8/2/075</subfield><subfield code="2">22</subfield></datafield><datafield ind1="0" ind2="4" tag="082"><subfield code="a">738.075</subfield><subfield code="2">22</subfield></datafield><datafield ind1="0" ind2="0" tag="245"><subfield code="a">Miller's ceramic figures.</subfield></datafield><datafield ind1="3" ind2=" " tag="246"><subfield code="a">Ceramic figures</subfield></datafield><datafield ind1=" " ind2=" " tag="260"><subfield code="a">London :</subfield><subfield code="b">Miller's,</subfield><subfield code="c">2006.</subfield></datafield><datafield ind1=" " ind2=" " tag="300"><subfield code="a">288 p. :</subfield><subfield code="b">ill. (some col.) ;</subfield><subfield code="c">24 cm.</subfield></datafield><datafield ind1=" " ind2=" " tag="500"><subfield code="a">Previous ed.: Tenterden: Millers, 2000.</subfield></datafield><datafield ind1=" " ind2=" " tag="504"><subfield code="a">Includes bibliographical references (p. 284) and indexes.</subfield></datafield><datafield ind1=" " ind2="0" tag="650"><subfield code="a">Porcelain figures</subfield><subfield code="x">Prices.</subfield></datafield><datafield ind1=" " ind2="0" tag="650"><subfield code="a">Porcelain figures</subfield><subfield code="x">Collectors and collecting.</subfield></datafield><datafield ind1=" " ind2=" " tag="938"><subfield code="a">Baker &amp; Taylor</subfield><subfield code="b">BKTY</subfield><subfield code="c">24.95</subfield><subfield code="d">18.71</subfield><subfield code="i">184533213X</subfield><subfield code="n">0006763197</subfield><subfield code="s">active</subfield></datafield><datafield ind1=" " ind2=" " tag="938"><subfield code="a">Quality Books, Inc.</subfield><subfield code="b">QUAL</subfield><subfield code="n">qbi07800321</subfield></datafield><datafield ind1=" " ind2=" " tag="938"><subfield code="a">Baker and Taylor</subfield><subfield code="b">BTCP</subfield><subfield code="n">BK0006763197</subfield></datafield><datafield ind1=" " ind2=" " tag="994"><subfield code="a">C0</subfield><subfield code="b">MRQ</subfield></datafield></record>
+<record><leader>00474nam a2200169 a 4500</leader><controlfield tag="001">mrq01096224</controlfield><controlfield tag="003">MAnMC</controlfield><controlfield tag="005">20080804205500.0</controlfield><controlfield tag="008">071109s2005    nyu           000 1 eng d</controlfield><datafield ind1=" " ind2=" " tag="020"><subfield code="z">(0373197527pbk.) :</subfield><subfield code="c">$4.25</subfield></datafield><datafield ind1=" " ind2=" " tag="040"><subfield code="d">UtOrBLW</subfield></datafield><datafield ind1="1" ind2=" " tag="100"><subfield code="a">Russell, Rebecca</subfield></datafield><datafield ind1="1" ind2="4" tag="245"><subfield code="a">The substitute fiancee /</subfield><subfield code="c">Rebecca Russell.</subfield></datafield><datafield ind1=" " ind2=" " tag="260"><subfield code="a">New York :</subfield><subfield code="b">Silhouette,</subfield><subfield code="c">2005.</subfield></datafield><datafield ind1=" " ind2=" " tag="300"><subfield code="a">186 p. ;</subfield><subfield code="c">18 cm.</subfield></datafield><datafield ind1=" " ind2="0" tag="440"><subfield code="a">Silhouette romance</subfield><subfield code="v">1752</subfield></datafield><datafield ind1=" " ind2="0" tag="830"><subfield code="a">Silhouette romance</subfield><subfield code="v">1752.</subfield></datafield></record>
+<record><leader>01474cgm a2200433Ka 4500</leader><controlfield tag="001">ocn214285386</controlfield><controlfield tag="003">OCoLC</controlfield><controlfield tag="005">20100628155400.0</controlfield><controlfield tag="007">vd cvaizq</controlfield><controlfield tag="008">080327s2007    cc ---            vlchi d</controlfield><datafield ind1=" " ind2=" " tag="020"><subfield code="z">978788430094X</subfield></datafield><datafield ind1="0" ind2=" " tag="024"><subfield code="a">CNE220704980</subfield></datafield><datafield ind1=" " ind2=" " tag="035"><subfield code="a">(OCoLC)214285386</subfield></datafield><datafield ind1=" " ind2=" " tag="040"><subfield code="a">MBT</subfield><subfield code="c">MBT</subfield><subfield code="d">MRQ</subfield></datafield><datafield ind1=" " ind2=" " tag="049"><subfield code="a">MRQA</subfield></datafield><datafield ind1=" " ind2=" " tag="066"><subfield code="c">$1</subfield></datafield><datafield ind1="0" ind2="0" tag="245"><subfield code="a">Chuang guan dong.</subfield><subfield code="n">Disc 1-3, Episode 1-9 /</subfield><subfield code="h">[videorecording]</subfield><subfield code="c">Zhongyang dian shi tai wen yi zhong xin ying shi bu, Shangdong dian ying dian shi ju zhi zuo zhong xin, Dalian dian shi tai lian he she zhi ; bian ju: Gao Mantang, Sun Jianye ; dao yan: Kong Sheng, Wang Bing ; zong dao yan: Zhang Xinjian.</subfield></datafield><datafield ind1=" " ind2=" " tag="260"><subfield code="a">Jinan :</subfield><subfield code="b">Qi lu dian zi yin xiang chu ban she,</subfield><subfield code="c">2007.</subfield></datafield><datafield ind1=" " ind2=" " tag="300"><subfield code="a">3 videodiscs :</subfield><subfield code="b">sd., col. ;</subfield><subfield code="c">4 3/4 in.</subfield></datafield><datafield ind1=" " ind2=" " tag="500"><subfield code="a">Chang pian (52 ji) dian shi lian xu ju.</subfield></datafield><datafield ind1="1" ind2=" " tag="511"><subfield code="a">Li Youbin, Sa Rina, Song Jia, Niu Li, Ma Enran, Wang Quirong.</subfield></datafield><datafield ind1=" " ind2=" " tag="520"><subfield code="a">Summary in vernacular field only.</subfield></datafield><datafield ind1=" " ind2=" " tag="538"><subfield code="a">DVD.</subfield></datafield><datafield ind1=" " ind2=" " tag="546"><subfield code="a">In Mandarin with Chinese subtitles.</subfield></datafield><datafield ind1=" " ind2="0" tag="651"><subfield code="a">China</subfield><subfield code="x">Rural conditions</subfield><subfield code="v">Drama.</subfield></datafield><datafield ind1=" " ind2="0" tag="655"><subfield code="a">Television programs</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Gao, Mantang</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Sun, Jianye</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Kong, Sheng.</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Wang, Bing</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Zhang, Xinjian.</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Li, Youbin.</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Sa, Rina.</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Song, Jia.</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Niu, Li.</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Ma, Enran.</subfield></datafield><datafield ind1="1" ind2=" " tag="700"><subfield code="a">Wang, Quirong.</subfield></datafield><datafield ind1=" " ind2=" " tag="994"><subfield code="a">C0</subfield><subfield code="b">MRQ</subfield></datafield></record>
+<record><leader>00490ngm a2200169 a 4500</leader><controlfield tag="001">mrq01239723</controlfield><controlfield tag="003">MAnMC</controlfield><controlfield tag="005">20100616133100.0</controlfield><controlfield tag="007">vd  gaizu</controlfield><controlfield tag="008">      s2010                      v eng d</controlfield><datafield ind1=" " ind2=" " tag="020"><subfield code="a">8901452100503</subfield></datafield><datafield ind1="0" ind2="2" tag="028"><subfield code="a">DHIF2338S</subfield></datafield><datafield ind1="0" ind2=" " tag="092"><subfield code="a">NH 6-11-10 mbu (Length of dvd &amp; pub date not listed AM)</subfield></datafield><datafield ind1="0" ind2="0" tag="245"><subfield code="a">Teen Patti</subfield><subfield code="s">WS</subfield><subfield code="h">[videorecording]</subfield></datafield><datafield ind1=" " ind2=" " tag="250"><subfield code="a">WS.</subfield></datafield><datafield ind1=" " ind2=" " tag="260"><subfield code="a">[s.l.], India :</subfield><subfield code="b">Serendipity Fims,</subfield><subfield code="c">c2010?</subfield></datafield><datafield ind1=" " ind2=" " tag="300"><subfield code="a">1 videodisc (? min.) :</subfield><subfield code="b">sd., col. ;</subfield><subfield code="c">4 3/4 in.</subfield></datafield></record>
+</collection>
\ No newline at end of file
diff --git a/README b/README
index 201ffbb..d83fb35 100644 (file)
--- a/README
+++ b/README
@@ -132,7 +132,6 @@ createlang plpgsql evergreen
 psql -f /usr/share/postgresql/8.4/contrib/tablefunc.sql -d evergreen
 psql -f /usr/share/postgresql/8.4/contrib/tsearch2.sql -d evergreen
 psql -f /usr/share/postgresql/8.4/contrib/pgxml.sql -d evergreen
-psql -f /usr/share/postgresql/8.4/contrib/isn.sql -d evergreen
 
 Once you have created the Evergreen database, you need to create a PostgreSQL
 user to access the database. Issue the following command as the "postgres"