diff options
author | Arne Georg Gleditsch <argggh@lxr.linpro.no> | 2007-11-15 21:51:00 +0100 |
---|---|---|
committer | Arne Georg Gleditsch <argggh@lxr.linpro.no> | 2007-11-15 21:51:00 +0100 |
commit | 8c978d76179b4f573c1eb9b9bb9db966c81330bb (patch) | |
tree | ade066d6c36105de19e2a826188d0f1c14818f59 /lib/LXRng/Search | |
parent | e9fa4c98bb5f084739d3418ade3f0c51e34a0aa1 (diff) |
Too many changes...
Diffstat (limited to 'lib/LXRng/Search')
-rw-r--r-- | lib/LXRng/Search/Xapian.pm | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/lib/LXRng/Search/Xapian.pm b/lib/LXRng/Search/Xapian.pm index 42c7580..b6e28a0 100644 --- a/lib/LXRng/Search/Xapian.pm +++ b/lib/LXRng/Search/Xapian.pm @@ -32,9 +32,11 @@ sub new_document { } sub add_document { - my ($self, $doc, $rel_id) = @_; + my ($self, $doc, $rel_ids) = @_; - $doc->add_term('__@@LXRREL_'.$rel_id); + foreach my $r (@$rel_ids) { + $doc->add_term('__@@LXRREL_'.$r); + } my $doc_id = $self->wrdb->add_document($doc); $self->{'writes'}++; $self->flush() if $self->{'writes'} % 499 == 0; @@ -42,20 +44,25 @@ sub add_document { } sub add_release { - my ($self, $doc_id, $rel_id) = @_; + my ($self, $doc_id, $rel_ids) = @_; - my $reltag = '__@@LXRREL_'.$rel_id; my $doc = $self->wrdb->get_document($doc_id); - my $term = $doc->termlist_begin; my $termend = $doc->termlist_end; - $term->skip_to($reltag); - if ($term ne $termend) { - return 0 if $term->get_termname eq $reltag; + my $changes = 0; + foreach my $r (@$rel_ids) { + my $reltag = '__@@LXRREL_'.$r; + my $term = $doc->termlist_begin; + $term->skip_to($reltag); + if ($term ne $termend) { + next if $term->get_termname eq $reltag; + } + $doc->add_term($reltag); + $changes++; } - $doc->add_term($reltag); - $self->wrdb->replace_document($doc_id, $doc); - return 1; + + $self->wrdb->replace_document($doc_id, $doc) if $changes; + return $changes; } sub flush { |