From patchwork Thu Dec 29 20:24:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arun Isaac X-Patchwork-Id: 45694 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 9723227BBED; Thu, 29 Dec 2022 20:26:03 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-3.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 01C2D27BBEB for ; Thu, 29 Dec 2022 20:26:03 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pAzSc-000749-Fx; Thu, 29 Dec 2022 15:25:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pAzSa-00073d-Ps for guix-patches@gnu.org; Thu, 29 Dec 2022 15:25:04 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pAzSa-0005j1-GI for guix-patches@gnu.org; Thu, 29 Dec 2022 15:25:04 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pAzSa-0007SH-Bp for guix-patches@gnu.org; Thu, 29 Dec 2022 15:25:04 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#60410] [PATCH 7/7] xapian: Preserve order of search results. Resent-From: Arun Isaac Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 29 Dec 2022 20:25:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60410 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 60410@debbugs.gnu.org, Ricardo Wurmus Cc: Arun Isaac Received: via spool by 60410-submit@debbugs.gnu.org id=B60410.167234547328573 (code B ref 60410); Thu, 29 Dec 2022 20:25:04 +0000 Received: (at 60410) by debbugs.gnu.org; 29 Dec 2022 20:24:33 +0000 Received: from localhost ([127.0.0.1]:33008 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pAzS5-0007Qn-83 for submit@debbugs.gnu.org; Thu, 29 Dec 2022 15:24:33 -0500 Received: from mugam.systemreboot.net ([139.59.75.54]:51358) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pAzRp-0007Q8-9f for 60410@debbugs.gnu.org; Thu, 29 Dec 2022 15:24:17 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=systemreboot.net; s=default; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=lBP7dpGu5sh1cldj46SDOEo9gkGoDzs6S6162/abQGI=; b=cyaYoAJZ6v995IrrsikTrA0PGw c7HmrXGC799XV1lMxhzpog665MkNWB+BUUnVfsPtzZGrx1lZVp+YiiDGK5rblhpWxm24X08CEEa5K tIQRGGk69Ut1wPbTRVKOFMjXJQowfgjjmi1H+1sk0bf5ZtJfkPKhS+ha45U1cIa2H8Y5eGyhoWzRk I6tTv6dBOQIcdVuScUTUUel4a9Jk3AJG8LIM/bsQ0GZ3FRFYgJiSgfDn+klBycTeScE69Nmm+J8AY 3iEZOhbihGhoR4vw+OOWeR/n+L/4iH58OdqY+HsSx3tteXgmnZ/m+TVnbqwXtrokdITsNSganP2Hw R6yeTvdg==; Received: from [192.168.2.1] (port=38338 helo=localhost.localdomain) by systemreboot.net with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1pAzRm-000oIe-2b; Fri, 30 Dec 2022 01:54:15 +0530 From: Arun Isaac Date: Thu, 29 Dec 2022 20:24:00 +0000 Message-Id: <20221229202400.28565-7-arunisaac@systemreboot.net> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221229201809.27997-1-arunisaac@systemreboot.net> References: <20221229201809.27997-1-arunisaac@systemreboot.net> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches 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