summaryrefslogtreecommitdiff
path: root/tissue/search.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tissue/search.scm')
-rw-r--r--tissue/search.scm41
1 files changed, 21 insertions, 20 deletions
diff --git a/tissue/search.scm b/tissue/search.scm
index bc60c19..b9feafc 100644
--- a/tissue/search.scm
+++ b/tissue/search.scm
@@ -1,5 +1,5 @@
;;; tissue --- Text based issue tracker
-;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2022, 2023 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of tissue.
;;;
@@ -49,13 +49,13 @@ mapping field names to prefixes."
query-parser))
(define %prefixes
- '(("title" . "S")))
+ '(("title" . "S")
+ ("creator" . "A")
+ ("lastupdater" . "XA")
+ ("assigned" . "XI")))
(define %boolean-prefixes
'(("type" . "XT")
- ("creator" . "A")
- ("lastupdater" . "XA")
- ("assigned" . "XI")
("keyword" . "K")
("tag" . "K")
("is" . "XS")))
@@ -97,7 +97,7 @@ when PRED returns #f."
query))
(define* (search-fold proc initial db search-query
- #:key (offset 0) (maximum-items (database-document-count db)))
+ #:key (offset 0) (maximum-items 1000))
"Search xapian database DB using SEARCH-QUERY and fold over the
results using PROC and INITIAL.
@@ -110,20 +110,21 @@ first call.
OFFSET specifies the number of items to ignore at the beginning of the
result set. MAXIMUM-ITEMS specifies the maximum number of items to
return."
- (mset-fold (lambda (item result)
- (proc (call-with-input-string (document-data (mset-item-document item))
- (compose scm->object read))
- (MSetIterator-mset-get item)
- result))
- initial
- (enquire-mset (let* ((query (parse-query search-query))
- (enquire (enquire db query)))
- ;; Sort by recency date (slot 0) when
- ;; query is strictly boolean.
- (when (boolean-query? query)
- (Enquire-set-sort-by-value enquire 0 #t))
- enquire)
- #:maximum-items maximum-items)))
+ (let ((mset (enquire-mset (let* ((query (parse-query search-query))
+ (enquire (enquire db query)))
+ ;; Sort by recency date (slot 0) when
+ ;; query is strictly boolean.
+ (when (boolean-query? query)
+ (Enquire-set-sort-by-value enquire 0 #t))
+ enquire)
+ #:maximum-items maximum-items)))
+ (mset-fold (lambda (item result)
+ (proc (call-with-input-string (document-data (mset-item-document item))
+ (compose scm->object read))
+ mset
+ result))
+ initial
+ mset)))
(define* (search-map proc db search-query
#:key (offset 0) (maximum-items (database-document-count db)))