unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Arun Isaac <arunisaac@systemreboot.net>
To: 60410@debbugs.gnu.org, Ricardo Wurmus <rekado@elephly.net>
Cc: Arun Isaac <arunisaac@systemreboot.net>
Subject: [bug#60410] [PATCH 7/7] xapian: Preserve order of search results.
Date: Thu, 29 Dec 2022 20:24:00 +0000	[thread overview]
Message-ID: <20221229202400.28565-7-arunisaac@systemreboot.net> (raw)
In-Reply-To: <20221229201809.27997-1-arunisaac@systemreboot.net>

Xapian orders search results by relevance. Preserve this order.

* mumi/xapian.scm (search): Reverse search results after consing to
preserve the original order.
* mumi/messages.scm (status-with-cache): Do not sort bugs by their bug
number. Preserve the order of bugs passed to this function.
---
 mumi/messages.scm | 13 ++++---------
 mumi/xapian.scm   | 21 +++++++++++----------
 2 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/mumi/messages.scm b/mumi/messages.scm
index b3ae962..fd52571 100644
--- a/mumi/messages.scm
+++ b/mumi/messages.scm
@@ -64,15 +64,10 @@
 (define (status-with-cache ids)
   "Invoke GET-STATUS, but only on those IDS that have not been cached
 yet.  Return new results alongside cached results."
-  (let* ((cached (filter-map cached? ids))
-         (uncached-ids (lset-difference eq?
-                                        ids
-                                        (map bug-num cached)))
-         (new (filter-map bug-status uncached-ids )))
-    ;; Cache new things
-    (map (lambda (bug) (cache! (bug-num bug) bug)) new)
-    ;; Return everything from cache
-    (sort (append cached new) (lambda (a b) (< (bug-num a) (bug-num b))))))
+  (map (lambda (id)
+         (or (cached? id)
+             (cache! id (bug-status id))))
+       ids))
 
 (define (extract-name address)
   (or (assoc-ref address 'name)
diff --git a/mumi/xapian.scm b/mumi/xapian.scm
index ae01acc..7ca5bb8 100644
--- a/mumi/xapian.scm
+++ b/mumi/xapian.scm
@@ -339,16 +339,17 @@ intact."
         ;; Collapse on mergedwith value
         (Enquire-set-collapse-key enq 2 1)
         ;; Fold over the results, return bug id.
-        (mset-fold (lambda (item acc)
-                     (cons
-                      (document-data (mset-item-document item))
-                      acc))
-                   '()
-                   ;; Get an Enquire object from the database with the
-                   ;; search results. Then, extract the MSet from the
-                   ;; Enquire object.
-                   (enquire-mset enq
-                                 #:maximum-items pagesize))))))
+        (reverse
+         (mset-fold (lambda (item acc)
+                      (cons
+                       (document-data (mset-item-document item))
+                       acc))
+                    '()
+                    ;; Get an Enquire object from the database with the
+                    ;; search results. Then, extract the MSet from the
+                    ;; Enquire object.
+                    (enquire-mset enq
+                                  #:maximum-items pagesize)))))))
 
 (define* (index! #:key full?)
   "Index all Debbugs log files corresponding to the selected
-- 
2.38.1





      parent reply	other threads:[~2022-12-29 20:26 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-29 20:18 [bug#60410] [PATCH 0/7] mumi: Boolean prefixes in xapian indexing and others Arun Isaac
2022-12-29 20:23 ` [bug#60410] [PATCH 1/7] xapian: Index several terms as boolean and without positions Arun Isaac
2022-12-31 18:09   ` Ricardo Wurmus
2022-12-31 23:02     ` Arun Isaac
2023-01-01 12:14       ` bug#60410: " Ricardo Wurmus
2022-12-29 20:23 ` [bug#60410] [PATCH 2/7] xapian: Declare some prefixes as boolean Arun Isaac
2023-01-01 23:19   ` Ricardo Wurmus
2023-01-02 17:01     ` Arun Isaac
2022-12-29 20:23 ` [bug#60410] [PATCH 3/7] xapian: Do not override the default OR implicit query operator Arun Isaac
2022-12-29 20:23 ` [bug#60410] [PATCH 4/7] messages: Remove unused set intersection feature in search-bugs Arun Isaac
2022-12-29 20:23 ` [bug#60410] [PATCH 5/7] messages: Offload limiting search results to xapian Arun Isaac
2022-12-29 20:23 ` [bug#60410] [PATCH 6/7] cache: Specify that cache! returns the cached value Arun Isaac
2022-12-29 20:24 ` Arun Isaac [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221229202400.28565-7-arunisaac@systemreboot.net \
    --to=arunisaac@systemreboot.net \
    --cc=60410@debbugs.gnu.org \
    --cc=rekado@elephly.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).