package PublicInbox::SearchMsg;
use strict;
use warnings;
-use Search::Xapian;
use PublicInbox::MID qw/mid_clean mid_mime/;
use PublicInbox::Address;
use PublicInbox::MsgTime qw(msg_timestamp msg_datestamp);
bless { doc => $doc, mime => undef, mid => $mid }, $class;
}
+sub get {
+ my ($class, $head, $db, $mid) = @_;
+ my $doc_id = $head->get_docid;
+ my $doc = $db->get_document($doc_id);
+ load_expand(wrap($class, $doc, $mid))
+}
+
sub get_val ($$) {
my ($doc, $col) = @_;
Search::Xapian::sortable_unserialise($doc->get_value($col));
$self->{subject} = $subj;
$self->{from} = $from;
$self->{references} = $refs;
+
+ # To: and Cc: are stored to optimize HDR/XHDR in NNTP since
+ # some NNTP clients will use that for message displays.
$self->{to} = $to;
$self->{cc} = $cc;
+
$self->{blob} = $blob;
$self->{mid} = $mid0;
}
$self->{mid} = $mid;
} elsif (my $rv = $self->{mid}) {
$rv;
+ } elsif ($self->{doc}) {
+ $self->{mid} = _get_term_val($self, 'Q', qr/\AQ/);
} else {
- $self->{mid} = _get_term_val($self, 'Q', qr/\AQ/) ||
- $self->_extract_mid;
+ $self->_extract_mid; # v1 w/o Xapian
}
}