Projet

Général

Profil

Development #6793

Intégrer un moteur de recherche

Ajouté par Frédéric Péters il y a environ 9 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
23 mars 2015
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

cf django-haystack


Fichiers


Demandes liées

Lié à Publik - Development #14159: système de recherche central (utilisateurs, demandes, base de connaissance)Fermé29 novembre 2016

Actions

Révisions associées

Révision 63f6794e (diff)
Ajouté par Frédéric Péters il y a environ 7 ans

add indexing of pages (#6793)

Révision 6491f69c (diff)
Ajouté par Frédéric Péters il y a environ 7 ans

add internal page contents search service (#6793)

Révision abbdf60c (diff)
Ajouté par Frédéric Péters il y a environ 7 ans

debian: require latest hobo for tenant aware haystack config (#6793)

Historique

#1

Mis à jour par Frédéric Péters il y a presque 9 ans

Cellule de type "recherche" dans la branche wip/search; cf vidéo.

Ça demandera à réfléchir à comment déployer l'indexation en multitenant (vu les volumes, un index whoosh posé dans le répertoire du tenant pourrait même être praticable).

#2

Mis à jour par Thomas Noël il y a plus de 7 ans

  • Lié à Development #14159: système de recherche central (utilisateurs, demandes, base de connaissance) ajouté
#3

Mis à jour par Frédéric Péters il y a environ 7 ans

Après #15085 réduire le taf ici à l'indexation full text des cellules et la prise en charge d'un /api/search/?q=whatever qui retournerait {'data': [{'text': '...', 'url': '...', 'description': '...'}]}.

#4

Mis à jour par Frédéric Péters il y a environ 7 ans

0001 c'est une reprise de ce qui était dans la vieille branche wip/cell, pour gérer l'indexation des contenus. Ça reste une indexation plutôt basique, avec quantité d'évolutions possibles.

Un truc à noter à la marge, ce sont les modifs à newsletters/models.py et notifications/models.py, qui remplacent le is_relevant() par un is_visible(); je me dis là-dessus qu'il y a un nettoyage à faire dans combo autour de ces deux méthodes, dont les rôles ne sont pas très nets.

0002 c'est l'ajout de /api/search/?q=..., j'ai pris l'option d'inclure "en dur" ce service de recherche dans le code, plutôt que de demander à ce qu'il soit ajouté à settings.SEARCH_SERVICES.

#5

Mis à jour par Frédéric Péters il y a environ 7 ans

(correction de copié/collé dans la modif à NewsletterCell)

#7

Mis à jour par Thomas Noël il y a environ 7 ans

Il a ajout d'un double {% if item.description %} inutile dans search-cell-results.html

Je voudrais d'abord passer #15352 qui va nécessiter de revoir un peu ce patch, parce que le q=%(q)s était une mauvaise idée.

L'import de haystack sur 0001 : je pense que ça nécessite d'ajouter la dépendance dans setup.py dans le même patch (voire dans debian/). Et peut-être woosh en recommends.

A part ça, j'ai pas encore compris comment l'index était généré, y'a une magie qui doit m'échapper.

#8

Mis à jour par Frédéric Péters il y a environ 7 ans

Version rebasée des patchs.

Il a ajout d'un double {% if item.description %} inutile dans search-cell-results.html

Corrigé.

L'import de haystack sur 0001 : je pense que ça nécessite d'ajouter la dépendance dans setup.py dans le même patch (voire dans debian/). Et peut-être woosh en recommends.

Tout à fait.

A part ça, j'ai pas encore compris comment l'index était généré, y'a une magie qui doit m'échapper.

La magie d'un fichier oublié, voilà intégrée la modification au fichier cron distribué dans le paquet, pour y ajouter :

su combo -s /bin/sh -c "/usr/bin/combo-manage tenant_command update_index --remove --all-tenants -v0" 

L'autre possibilité, qui est en place côté Welco, c'est de déclarer dans les setttings,

HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

qui fera que sur toutes les modifs d'objet il y aura réindexation. (mais je préfère y aller mollo au début).

#9

Mis à jour par Thomas Noël il y a environ 7 ans

rerelecture :
  • peut-être faire les « return '' » dans le render_for_search dès 0001 (combo/data/models.py, lignes 471 et suivantes) ?
  • mais surtout, quid de l'index whoosh en multitenant ? (a priori il nous faudra un settings_loader dans hobo pour adapter le PATH en fonction du tenant)
#10

Mis à jour par Thomas Noël il y a environ 7 ans

Thomas Noël a écrit :

  • mais surtout, quid de l'index whoosh en multitenant ? (a priori il nous faudra un settings_loader dans hobo pour adapter le PATH en fonction du tenant)

Certainement ajouter ceci :

--- a/debian/debian_config.py
+++ b/debian/debian_config.py
@@ -18,6 +18,13 @@ INSTALLED_APPS = ('hobo.agent.combo', ) + INSTALLED_APPS
 # add statics_hash context processor
 TEMPLATE_CONTEXT_PROCESSORS = tuple(TEMPLATE_CONTEXT_PROCESSORS) + ('hobo.context_processors.statics_hash',)

+# use multitenant haystack configuration
+HAYSTACK_CONNECTIONS = {
+    'default': {
+        'ENGINE': 'hobo.multitenant.haystack.WhooshEngine',
+    }
+}
+
 #
 # local settings
 #

#11

Mis à jour par Frédéric Péters il y a environ 7 ans

peut-être faire les « return '' » dans le render_for_search dès 0001 (combo/data/models.py, lignes 471 et suivantes) ?

Oui.

mais surtout, quid de l'index whoosh en multitenant ? (a priori il nous faudra un settings_loader dans hobo pour adapter le PATH en fonction du tenant)

(pour ceux qui auraient raté le ticket hobo, c'est #15391, fait dans #8744).

Je serais bien pour mettre ça dans le debian_config_common.py de Hobo, parce que je pensais qu'il y était pour Welco :

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'hobo.multitenant.haystack.WhooshEngine',
    }
}       

(j'ai créé #15392)

#12

Mis à jour par Thomas Noël il y a environ 7 ans

Ack pour les deux patches de ce ticket.

Mais attendre cependant que #15392 soit passé (et packagé voire installé) pour éviter un drame.

#13

Mis à jour par Frédéric Péters il y a environ 7 ans

  • Statut changé de En cours à Résolu (à déployer)

Mais attendre cependant que #15392 soit passé (et packagé voire installé) pour éviter un drame.

J'ai ajouté une modif au debian/control pour empêcher ça.

commit abbdf60cd8aa6cd93ea7505e784040c1181adfd6
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Mon Mar 13 09:29:05 2017 +0100

    debian: require latest hobo for tenant aware haystack config (#6793)

commit 6491f69cd119ff4e4b32835539dec6e5d44f6483
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Sat Mar 4 15:08:01 2017 +0100

    add internal page contents search service (#6793)

commit 63f6794e8be97ac18f887c7825242c46ce3f49f6
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Sat Jun 6 16:16:19 2015 +0200

    add indexing of pages (#6793)
#14

Mis à jour par Frédéric Péters il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF