added node search
authordpavlin <dpavlin@8392b6e1-25fa-0310-8288-cc32f8e212ea>
Sun, 11 Sep 2005 13:05:06 +0000 (13:05 +0000)
committerdpavlin <dpavlin@8392b6e1-25fa-0310-8288-cc32f8e212ea>
Sun, 11 Sep 2005 13:05:06 +0000 (13:05 +0000)
git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/BackupPC/trunk@117 8392b6e1-25fa-0310-8288-cc32f8e212ea

bin/BackupPC_updatedb
lib/BackupPC/SearchLib.pm

index 12ac84a..8cc33ba 100755 (executable)
@@ -43,18 +43,7 @@ my $dsn = $Conf{SearchDSN} || die "Need SearchDSN in config.pl\n";
 my $user = $Conf{SearchUser} || '';
 
 my $use_hest = $Conf{HyperEstraierIndex};
-my ($index_path, $index_node_url);
-if ($use_hest) {
-       use HyperEstraier;
-       if ($use_hest =~ m#^http://#) {
-               $index_node_url = $use_hest;
-       } else {
-               $index_path = $TopDir . '/' . $index_path;
-               $index_path =~ s#//#/#g;
-       }
-}
-print "-- $use_hest : $index_path OR $index_node_url --\n";
-
+my ($index_path, $index_node_url) = getHyperEstraier_url($use_hest);
 
 my $dbh = DBI->connect($dsn, $user, "", { RaiseError => 1, AutoCommit => 0 });
 
index 83818f5..de06984 100644 (file)
@@ -175,6 +175,23 @@ sub getFiles($) {
        return ($results, \@ret);
 }
 
+sub getHyperEstraier_url($) {
+       my ($use_hest) = @_;
+
+       return unless $use_hest;
+
+       use HyperEstraier;
+       my ($index_path, $index_node_url);
+
+       if ($use_hest =~ m#^http://#) {
+               $index_node_url = $use_hest;
+       } else {
+               $index_path = $TopDir . '/' . $index_path;
+               $index_path =~ s#//#/#g;
+       }
+       return ($index_path, $index_node_url);
+}
+
 sub getFilesHyperEstraier($) {
        my ($param) = @_;
 
@@ -185,9 +202,19 @@ sub getFilesHyperEstraier($) {
 
        use HyperEstraier;
 
+       my ($index_path, $index_node_url) = getHyperEstraier_url($index_path);
+
        # open the database
-       my $db = HyperEstraier::Database->new();
-       $db->open($index_path, $HyperEstraier::ESTDBREADER);
+       my $db;
+       if ($index_path) {
+               $db = HyperEstraier::Database->new();
+               $db->open($index_path, $HyperEstraier::ESTDBREADER);
+       } elsif ($index_node_url) {
+               $db ||= HyperEstraier::Node->new($index_node_url);
+               $db->set_auth('admin', 'admin');
+       } else {
+               die "BUG: unimplemented";
+       }
 
        # create a search condition object
        my $cond = HyperEstraier::Condition->new();
@@ -219,17 +246,32 @@ sub getFilesHyperEstraier($) {
        $cond->set_order( 'date NUMA' );
 
        # get the result of search
-       my $result = $db->search($cond, 0);
-
        my @res;
-       my $hits = $result->size;
+       my ($result, $hits);
+
+       if ($index_path) {
+               $result = $db->search($cond, 0);
+               $hits = $result->size;
+       } elsif ($index_node_url) {
+               $result = $db->search($cond, 0);
+               $hits = $result->doc_num;
+       } else {
+               die "BUG: unimplemented";
+       }
 
        # for each document in result
        for my $i ($offset .. ($offset + $on_page - 1)) {
                last if ($i >= $hits);
 
-               my $id = $result->get($i);
-               my $doc = $db->get_doc($id, 0);
+               my $doc;
+               if ($index_path) {
+                       my $id = $result->get($i);
+                       $doc = $db->get_doc($id, 0);
+               } elsif ($index_node_url) {
+                       $doc = $result->get_doc($i);
+               } else {
+                       die "BUG: unimplemented";
+               }
 
                my $row;
                foreach my $c (qw/fid hname sname backupnum fiilename filepath date type size/) {