From 1cd384702e90982eb7e0f0ba6aea88d20958f7f9 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Thu, 29 Dec 2022 20:23:54 +0000 Subject: xapian: Index several terms as boolean and without positions. * mumi/xapian.scm (index-files): Index bug number, submitter, authors, owner, severity, tags, status, file and msgids as boolean terms. Index bug number, severity, tags, status, file and msgids without position information. --- mumi/xapian.scm | 65 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 14 deletions(-) diff --git a/mumi/xapian.scm b/mumi/xapian.scm index 68169e8..06a54cd 100644 --- a/mumi/xapian.scm +++ b/mumi/xapian.scm @@ -1,6 +1,6 @@ ;;; mumi -- Mediocre, uh, mail interface ;;; Copyright © 2020, 2022 Ricardo Wurmus -;;; Copyright © 2020 Arun Isaac +;;; Copyright © 2020, 2022 Arun Isaac ;;; ;;; This program is free software: you can redistribute it and/or ;;; modify it under the terms of the GNU Affero General Public License @@ -119,20 +119,57 @@ messages and index their contents in the Xapian database at DBPATH." (term-generator (make-term-generator #:stem (make-stem "en") #:document doc))) ;; Index fields with a suitable prefix. This allows for - ;; searching separate fields as in subject:foo, - ;; from:bar, etc. - (index-text! term-generator bugid #:prefix "B") - (index-text! term-generator submitter #:prefix "A") - (index-text! term-generator authors #:prefix "XA") + ;; searching separate fields as in subject:foo, from:bar, + ;; etc. We do not keep track of the within document + ;; frequencies of terms that will be used for boolean + ;; filtering. We do not generate position information for + ;; fields that will not need phrase searching or NEAR + ;; searches. + (index-text! term-generator + bugid + #:prefix "B" + #:wdf-increment 0 + #:positions? #f) + (index-text! term-generator + submitter + #:prefix "A" + #:wdf-increment 0) + (index-text! term-generator + authors + #:prefix "XA" + #:wdf-increment 0) (index-text! term-generator subjects #:prefix "S") - (index-text! term-generator (or (bug-owner bug) "") #:prefix "XO") - (index-text! term-generator (or (bug-severity bug) "normal") #:prefix "XS") - (index-text! term-generator (or (bug-tags bug) "") #:prefix "XT") - (index-text! term-generator (cond - ((bug-done bug) "done") - (else "open")) #:prefix "XSTATUS") - (index-text! term-generator file #:prefix "F") - (index-text! term-generator msgids #:prefix "XU") + (index-text! term-generator + (or (bug-owner bug) "") + #:prefix "XO" + #:wdf-increment 0) + (index-text! term-generator + (or (bug-severity bug) "normal") + #:prefix "XS" + #:wdf-increment 0 + #:positions? #f) + (index-text! term-generator + (or (bug-tags bug) "") + #:prefix "XT" + #:wdf-increment 0 + #:positions? #f) + (index-text! term-generator + (cond + ((bug-done bug) "done") + (else "open")) + #:prefix "XSTATUS" + #:wdf-increment 0 + #:positions? #f) + (index-text! term-generator + file + #:prefix "F" + #:wdf-increment 0 + #:positions? #f) + (index-text! term-generator + msgids + #:prefix "XU" + #:wdf-increment 0 + #:positions? #f) ;; Index subject and body without prefixes for general ;; search. -- cgit v1.2.3