summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2022-07-06 14:14:17 +0200
committerRicardo Wurmus <rekado@elephly.net>2022-07-06 14:14:17 +0200
commite4cce9e1f903e3a64ca038bf1279220f0680b06a (patch)
tree737f78bd029f6a224d78a5a40c920e372de211f7
parentd217d1cafea935b8a70d642ee62af041cbaee47e (diff)
xapian: search: Convert msgid string to hash.
-rw-r--r--mumi/xapian.scm13
1 files changed, 9 insertions, 4 deletions
diff --git a/mumi/xapian.scm b/mumi/xapian.scm
index 8024c6d..9c594d6 100644
--- a/mumi/xapian.scm
+++ b/mumi/xapian.scm
@@ -272,10 +272,15 @@ intact."
(lambda (db)
(let* ((querystring*
(string-join (map (lambda (token)
- (if (or (string-prefix? "date:" token)
- (string-prefix? "mdate:" token))
- (sanitize-date-range token)
- token))
+ (cond
+ ((or (string-prefix? "date:" token)
+ (string-prefix? "mdate:" token))
+ (sanitize-date-range token))
+ ((string-prefix? "msgid:" token)
+ (let ((msgid (substring token (string-length "msgid:"))))
+ (format #false "msgid:~a"
+ (string-hash msgid))))
+ (else token)))
(tokenize querystring))))
;; Parse querystring passing a stemmer and suitable
;; prefixes for field search.