lib/PublicInbox/Search.pm | 1 + lib/PublicInbox/SearchIdx.pm | 1 + t/search.t | 5 +++++ diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm index f2d3b92dc821e87e71b5dd2cc3f7729157f02494..c54cf7b9911affce9680e7160b1fdecbb3aad20f 100644 --- a/lib/PublicInbox/Search.pm +++ b/lib/PublicInbox/Search.pm @@ -12,6 +12,7 @@ TS => 0, # Received: header in Unix time (IMAP INTERNALDATE) YYYYMMDD => 1, # Date: header for searching in the WWW UI DT => 2, # Date: YYYYMMDDHHMMSS BYTES => 3, # IMAP RFC822.SIZE + UID => 4, # IMAP UID == NNTP article number == Xapian docid # TODO # REPLYCNT => 4, # IMAP ANSWERED }; diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm index f7462aa74ca0aa7ff73992437ffeca36c65e60ca..3df7970ebf984252f006056042946425e8ef7335 100644 --- a/lib/PublicInbox/SearchIdx.pm +++ b/lib/PublicInbox/SearchIdx.pm @@ -342,6 +342,7 @@ add_val($doc, PublicInbox::Search::YYYYMMDD(), $yyyymmdd); my $dt = strftime('%Y%m%d%H%M%S', @ds); add_val($doc, PublicInbox::Search::DT(), $dt); add_val($doc, PublicInbox::Search::BYTES(), $smsg->{bytes}); + add_val($doc, PublicInbox::Search::UID(), $smsg->{num}); my $tg = term_generator($self); $tg->set_document($doc); diff --git a/t/search.t b/t/search.t index cf3254169ca3485e689e5498f97df82b2b0dc69f..d4ca28c794f8255b648100355c40726c3e3e88c5 100644 --- a/t/search.t +++ b/t/search.t @@ -324,6 +324,11 @@ my $bytes = PublicInbox::Smsg::get_val($doc, $col); like($bytes, qr/\A[0-9]+\z/, '$bytes stored as digit'); ok($bytes > 0, '$bytes is > 0'); is($bytes, $smsg->{bytes}, 'bytes Xapian value matches Over'); + + $col = PublicInbox::Search::UID(); + my $uid = PublicInbox::Smsg::get_val($doc, $col); + is($uid, $smsg->{num}, 'UID column matches {num}'); + is($uid, $m->get_docid, 'UID column matches docid'); } $mset = $ro->query('tc:list@example.com', {mset => 1});