summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-03-23 23:53:55 +0100
committerLudovic Courtès <ludo@gnu.org>2019-03-24 00:13:53 +0100
commit94aeec0aef03ab44e41bfc3e77c3b623cb3d607c (patch)
tree77153b79c913700c055080f9a3abc1f0b646bf19
parent7b7e4e89c8a1a34e166a2755493e48035e8a78ab (diff)
downloadguix-94aeec0aef03ab44e41bfc3e77c3b623cb3d607c.tar.gz
ui: Bypass Texinfo parsing and rendering for searches.
This makes search queries such as:

  LANGUAGE=fr guix package -s utilitaire -s recherche

about 6 times faster.

* guix/ui.scm (%package-metrics): Do not use 'package-synopsis-string'
and 'package-description-string' to bypass Texinfo parsing and
rendering.
-rw-r--r--guix/ui.scm10
1 files changed, 8 insertions, 2 deletions
diff --git a/guix/ui.scm b/guix/ui.scm
index 2fc001d2eb..0070301c47 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -1329,8 +1329,14 @@ score, the more relevant OBJ is to REGEXPS."
   ;; Metrics used to compute the "relevance score" of a package against a set
   ;; of regexps.
   `((,package-name . 4)
-    (,package-synopsis-string . 3)
-    (,package-description-string . 2)
+
+    ;; Match regexps on the raw Texinfo since formatting it is quite expensive
+    ;; and doesn't have much of an effect on search results.
+    (,(lambda (package)
+        (and=> (package-synopsis package) P_)) . 3)
+    (,(lambda (package)
+        (and=> (package-description package) P_)) . 2)
+
     (,(lambda (type)
         (match (and=> (package-location type) location-file)
           ((? string? file) (basename file ".scm"))