From c9df10e4c24549097fcfd2009c3b2833a341fa60 Mon Sep 17 00:00:00 2001
From: Kristian Klausen <kristian@klausen.dk>
Date: Sun, 18 Sep 2022 00:57:20 +0200
Subject: [PATCH] mailman3: Switch to a faster search backend (Xapian)

Whoosh is used by default, but it is slow at indexing (multiple hours
for just aur-requests) and searching e.g. aur-requests isn't possible
(it is slow and uses 3G+ of memory resulting in it getting OOM-killed).

Xapian indexed everything in just 76 minutes and searching aur-requests
now works and is plenty fast.

Co-authored-by: Evangelos Foutras <evangelos@foutrelis.com>
---
 roles/mailman3/tasks/main.yml           | 2 +-
 roles/mailman3/templates/settings.py.j2 | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/roles/mailman3/tasks/main.yml b/roles/mailman3/tasks/main.yml
index fb5ad7b7d..390d75739 100644
--- a/roles/mailman3/tasks/main.yml
+++ b/roles/mailman3/tasks/main.yml
@@ -1,5 +1,5 @@
 - name: Install mailman3 and related packages
-  pacman: name=mailman3,mailman3-hyperkitty,python-psycopg2,mailman-web,uwsgi-plugin-python state=present
+  pacman: name=mailman3,mailman3-hyperkitty,python-psycopg2,mailman-web,python-xapian-haystack,uwsgi-plugin-python state=present
   register: install
 
 - name: Install {mailman,mailman-web} configuration
diff --git a/roles/mailman3/templates/settings.py.j2 b/roles/mailman3/templates/settings.py.j2
index cb97aa796..63acbdfb8 100644
--- a/roles/mailman3/templates/settings.py.j2
+++ b/roles/mailman3/templates/settings.py.j2
@@ -51,7 +51,7 @@ HYPERKITTY_ENABLE_GRAVATAR = False
 
 HAYSTACK_CONNECTIONS = {
     'default': {
-        'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
-        'PATH': '/var/lib/mailman-web/fulltext_index'
+        'ENGINE': 'xapian_backend.XapianEngine',
+        'PATH': '/var/lib/mailman-web/xapian_index'
     }
 }
-- 
GitLab