New
authorMike Taylor <mike@indexdata.com>
Fri, 2 Mar 2007 15:14:13 +0000 (15:14 +0000)
committerMike Taylor <mike@indexdata.com>
Fri, 2 Mar 2007 15:14:13 +0000 (15:14 +0000)
bin/reindex.pl [new file with mode: 0755]

diff --git a/bin/reindex.pl b/bin/reindex.pl
new file mode 100755 (executable)
index 0000000..c802fe3
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/perl -w
+
+# $Id: reindex.pl,v 1.1 2007-03-02 15:14:13 mike Exp $
+
+use strict;
+use warnings;
+use ZOOM;
+
+if (@ARGV != 1) {
+    print STDERR "Usage: $0 target\n";
+    exit 1;
+}
+
+my $conn = new ZOOM::Connection($ARGV[0]);
+$conn->option(preferredRecordSyntax => "xml");
+$conn->option(elementSetName => "zebra::data");
+my $rs = $conn->search_pqf('@attr 1=_ALLRECORDS @attr 2=103 ""');
+my $n = $rs->size();
+$| = 1;
+print "$0: reindexing $n records\n";
+foreach my $i (1..$n) {
+    print ".";
+    print " $i/$n (", int($i*100/$n), "%)\n" if $i % 50 == 0;
+    my $rec = $rs->record($i-1);
+    my $xml = $rec->render();
+    update($conn, $xml);
+}
+print " $n/$n (100%)\n" if $n % 50 != 0;
+commit($conn);
+print "committed\n";
+
+
+# These might be better as ZOOM::Connection methods
+sub update {
+    my($conn, $xml) = @_;
+
+    my $p = $conn->package();
+    $p->option(action => "specialUpdate");
+    $p->option(record => $xml);
+    $p->send("update");
+    $p->destroy();
+}
+
+sub commit {
+    my($conn) = @_;
+
+    my $p = $conn->package();
+    $p->send("commit");
+    $p->destroy();
+}