diff options
Diffstat (limited to 'tissue/search.scm')
-rw-r--r-- | tissue/search.scm | 41 |
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))) |