}
# try to find the URL with Xapian to avoid forking
- my $doc_id = eval { $s->find_unique_doc_id('XMID' . $mid) };
+ my $doc_id = eval { $s->find_first_doc_id('XMID' . $mid) };
if ($@) {
# xapian not configured properly for this repo
push @nox, $other;
);
my %bool_pfx_external = (
- mid => 'XMID', # uniQue id (Message-ID)
+ mid => 'XMID', # Message-ID (full/exact)
);
my %prob_prefix = (
my ($self, $mid) = @_;
$mid = mid_clean($mid);
- my $doc_id = $self->find_unique_doc_id('XMID' . $mid);
+ my $doc_id = $self->find_first_doc_id('XMID' . $mid);
my $smsg;
if (defined $doc_id) {
# raises on error:
($db->postlist_begin($termval), $db->postlist_end($termval));
}
+sub find_first_doc_id {
+ my ($self, $termval) = @_;
+
+ my ($begin, $end) = $self->find_doc_ids($termval);
+
+ return undef if $begin->equal($end); # not found
+
+ $begin->get_docid;
+}
+
# normalize subjects so they are suitable as pathnames for URLs
# XXX: consider for removal
sub subject_path {
$mid = mid_clean($mid);
eval {
- $doc_id = $self->find_unique_doc_id('XMID' . $mid);
- if (defined $doc_id) {
- $db->delete_document($doc_id);
- } else {
+ my ($head, $tail) = $self->find_doc_ids('XMID' . $mid);
+ if ($head->equal($tail)) {
warn "cannot remove non-existent <$mid>\n";
}
+ for (; $head != $tail; $head->inc) {
+ my $docid = $head->get_docid;
+ $db->delete_document($docid);
+ }
};
if ($@) {