about summary refs log tree commit homepage
path: root/lib/PublicInbox/SearchIdx.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-09-09 00:01:24 +0000
committerEric Wong <e@80x24.org>2016-09-09 00:02:18 +0000
commita9c903a57ff9a18c56a53bcba4316eade423fef6 (patch)
tree2c3499494c6305dc97b74371e575e632222dd19b /lib/PublicInbox/SearchIdx.pm
parent766d9b1ef9e2e2c325c5dae9d17bfeb85c9d2f93 (diff)
downloadpublic-inbox-a9c903a57ff9a18c56a53bcba4316eade423fef6.tar.gz
"bs:" and "b:" are adapted from mairix(1)

We will also support searching explicitly for quoted vs
non-quoted text via "q:" and "nq:" prefixes since sometimes
readers will not care for quoted text.

In the future, we will support parsing diffs (perhaps when
repobrowse integration is complete).

Note: this roughly doubles the size of the Xapian database due
to the additional information; so this change may not be worth
it.
Diffstat (limited to 'lib/PublicInbox/SearchIdx.pm')
-rw-r--r--lib/PublicInbox/SearchIdx.pm17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm
index 37fefbea..cd27a294 100644
--- a/lib/PublicInbox/SearchIdx.pm
+++ b/lib/PublicInbox/SearchIdx.pm
@@ -173,7 +173,10 @@ sub add_message {
                 my $tg = $self->term_generator;
 
                 $tg->set_document($doc);
-                $tg->index_text($subj, 1, 'S') if $subj;
+                if ($subj) {
+                        $tg->index_text($subj, 1, 'S');
+                        $tg->index_text($subj, 1, 'XBS');
+                }
                 $tg->increase_termpos;
                 $tg->index_text($subj) if $subj;
                 $tg->increase_termpos;
@@ -199,13 +202,21 @@ sub add_message {
                                 }
                         }
                         if (@quot) {
-                                $tg->index_text(join("\n", @quot), 0);
+                                my $s = join("\n", @quot);
                                 @quot = ();
+                                $tg->index_text($s, 1, 'XQUOT');
+                                $tg->index_text($s, 0, 'XBS');
+                                $tg->index_text($s, 0, 'XBODY');
+                                $tg->index_text($s, 0);
                                 $tg->increase_termpos;
                         }
                         if (@orig) {
-                                $tg->index_text(join("\n", @orig));
+                                my $s = join("\n", @orig);
                                 @orig = ();
+                                $tg->index_text($s, 1, 'XNQ');
+                                $tg->index_text($s, 1, 'XBS');
+                                $tg->index_text($s, 1, 'XBODY');
+                                $tg->index_text($s);
                                 $tg->increase_termpos;
                         }
                 });