Changeset 435

Show
Ignore:
Timestamp:
01/31/05 10:22:18 (4 years ago)
Author:
torben
Message:

Completed the Plucene Indexer class hierarchy, integrated it into the XML
Comm driver. The test program runs fine with this.

Note, that the XML comm driver is fixed to Plucene Libs at this time,
extracting it into a subclass using some kind of Strategy/Factory combo
should be no problem though.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/external-tools/indexer-backends/plucene/Midcom/Indexer/XMLComm.pm

    r430 r435  
    1111use Midcom::Plucene::QueryRequest; 
    1212use Midcom::Plucene::DeleteRequest; 
     13use Midcom::Plucene::IndexRequest; 
    1314 
    1415=head1 NAME 
     
    174175{ 
    175176        my ($self, $node) = @_; 
     177 
    176178         
    177179        my $request_id = $node->getAttribute('id'); 
    178180        my $document_node = $node->firstChild; 
    179181 
    180         print "INDEX ID $request_id:\n"; 
    181          
    182182        while ($document_node) 
    183183        { 
     184                my $request = Midcom::Plucene::IndexRequest->new($self); 
     185                $request->id($request_id); 
     186                $request->documentID($document_node->getAttribute('id')); 
     187 
    184188                # Parse the documents 
    185                 my $document_id = $document_node->getAttribute('id'); 
    186                 print "\tDocument ID $document_id\n"; 
    187189                 
    188190                my $field = $document_node->firstChild; 
     
    193195                        my $content = $field->textContent; 
    194196 
    195                         print "\t\t$type $name = $content\n"; 
     197                        if ($type eq 'date')  
     198                        {  
     199                                $request->addDate($field->getAttribute('name'), $field->textContent);  
     200                        } 
     201                        elsif ($type eq 'keyword')  
     202                        {  
     203                                $request->addKeyword($field->getAttribute('name'), $field->textContent);  
     204                        } 
     205                        elsif ($type eq 'unindexed')  
     206                        {  
     207                                $request->addUnIndexed($field->getAttribute('name'), $field->textContent);  
     208                        } 
     209                        elsif ($type eq 'unstored')  
     210                        {  
     211                                $request->addUnStored($field->getAttribute('name'), $field->textContent);  
     212                        } 
     213                        elsif ($type eq 'text')  
     214                        {  
     215                                $request->addText($field->getAttribute('name'), $field->textContent);  
     216                        } 
    196217                         
    197218                        $field = $field->nextSibling(); 
    198219                } 
    199220                 
     221                $request->dump; 
     222                push @{$self->{requests}}, $request; 
    200223 
    201224                # Go to the next document 
  • trunk/external-tools/indexer-backends/plucene/Midcom/Plucene/DeleteRequest.pm

    r430 r435  
    88use warnings; 
    99 
     10use Midcom::Plucene::BaseRequest; 
     11use Plucene::Index::Term; 
    1012use Time::Piece; 
    11 use Plucene::Index::Term; 
     13 
     14 
     15@Midcom::Plucene::DeleteRequest::ISA = ('Midcom::Plucene::BaseRequest'); 
     16 
    1217 
    1318=head1 NAME 
    1419 
    15 Midcom::Plucene::QueryDelete - Query Delete interface 
     20Midcom::Plucene::DeleteRequest - Delete interface 
    1621 
    1722=head1 SYNOPSIS 
     
    4247{ 
    4348        my $class = shift; 
    44         my $self = {}
    45  
    46         $self->{_XMLComm} = shift
     49        my $self = $class->SUPER::new()
     50         
     51        $self->type('delete')
    4752        $self->{_documentID} = undef; 
    48         $self->{_id} = undef; 
    4953 
    5054        bless ($self, $class); 
     
    6165        return $self->{_documentID}; 
    6266} 
    63  
    64 sub id 
    65 { 
    66         my $self = shift; 
    67         if (@_)  
    68         {  
    69                 $self->{_id} = shift;  
    70         } 
    71         return $self->{_id}; 
    72 } 
    73  
    7467 
    7568 
     
    9689{ 
    9790        my $self = shift; 
    98         print "DELETE REQUEST ID=" . $self->{_id} . "\n"
     91        $self->SUPER::dump()
    9992        print "\tDocument ID: " . $self->{_documentID} . "\n"; 
    10093} 
  • trunk/external-tools/indexer-backends/plucene/Midcom/Plucene/QueryRequest.pm

    r430 r435  
    88use warnings; 
    99 
    10 use Time::Piece
     10use Midcom::Plucene::BaseRequest
    1111use Plucene::Document::DateSerializer; 
    1212use Plucene::Search::DateFilter; 
     13use Time::Piece; 
     14 
     15 
     16@Midcom::Plucene::QueryRequest::ISA = ('Midcom::Plucene::BaseRequest'); 
     17 
    1318 
    1419=head1 NAME 
     
    4449{ 
    4550        my $class = shift; 
    46         my $self = {}
     51        my $self = $class->SUPER::new()
    4752 
    48         $self->{_XMLComm} = shift
     53        $self->type('query')
    4954        $self->{_queryString} = undef; 
    5055        $self->{_dateFilterField} = undef; 
    5156        $self->{_dateFilterFrom} = undef; 
    5257        $self->{_dateFilterTo} = undef; 
    53         $self->{_id} = undef; 
    5458 
    5559        bless ($self, $class); 
    5660        return $self; 
    57 } 
    58  
    59 ######### 
    60 # Helpers 
    61  
    62 # Parses an ISO-8601 (YYYY-MM-DDTHH:MM:SS) Timestamp to a Time::Piece 
    63  
    64 sub dateFromString 
    65 { 
    66         my ($self, $arg) = @_; 
    67         return Time::Piece->strptime($arg, "%Y-%m-%dT%H:%M:%S"); 
    6861} 
    6962 
     
    8982{ 
    9083        my $self = shift; 
    91         if (@_)  
    92         {  
    93                 my $arg = shift; 
    94                 if (UNIVERSAL::isa($arg, 'Time::Piece')) 
    95                 { 
    96                         $self->{_dateFilterFrom} = $arg;  
    97                 } 
    98                 else 
    99                 { 
    100                         $self->{_dateFilterFrom} = $self->dateFromString($arg); 
    101                 } 
    102         } 
     84        if (@_) { $self->{_dateFilterFrom} = $self->mkDate(shift); } 
    10385        return $self->{_dateFilterFrom}; 
    10486} 
     
    10789{ 
    10890        my $self = shift; 
    109         if (@_)  
    110         {  
    111                 my $arg = shift; 
    112                 if (UNIVERSAL::isa($arg, 'Time::Piece')) 
    113                 { 
    114                         $self->{_dateFilterTo} = $arg;  
    115                 } 
    116                 else 
    117                 { 
    118                         $self->{_dateFilterTo} = $self->dateFromString($arg); 
    119                 } 
    120         } 
     91        if (@_) { $self->{_dateFilterFrom} = $self->mkDate(shift); } 
    12192        return $self->{_dateFilterTo}; 
    12293} 
    123  
    124 sub id 
    125 { 
    126         my $self = shift; 
    127         if (@_)  
    128         {  
    129                 $self->{_id} = shift;  
    130         } 
    131         return $self->{_id}; 
    132 } 
    133  
    13494 
    13595 
     
    175135{ 
    176136        my $self = shift; 
    177         print "QUERY REQUEST ID=" . $self->{_id} . "\n"; 
     137        $self->SUPER::dump(); 
     138 
    178139        print "\tQueryString: " . $self->{_queryString} . "\n"; 
    179140        if ($self->{_dateFilterField})