diff options
author | Arun Isaac <arunisaac@systemreboot.net> | 2022-12-29 20:23:54 +0000 |
---|---|---|
committer | Ricardo Wurmus <rekado@elephly.net> | 2022-12-31 19:00:13 +0100 |
commit | 1cd384702e90982eb7e0f0ba6aea88d20958f7f9 (patch) | |
tree | 41b5ef1378256ac6d52000b95d80290dbfe90e6b | |
parent | 7d8293d8cd4bb71c852a55e29b634a177f684ab9 (diff) |
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.
-rw-r--r-- | mumi/xapian.scm | 65 |
1 files 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 <rekado@elephly.net> -;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2020, 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; 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. |