Découpler un peu les chercheurs et l'authentification Django
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / scripts / sphinx.conf.py.in
index ede9ef4..c5f52f7 100644 (file)
@@ -27,13 +27,14 @@ SQL_HOST = settings.DATABASE_HOST
 SQL_USER = settings.DATABASE_USER
 SQL_PASS = settings.DATABASE_PASSWORD
 SQL_DB = settings.DATABASE_NAME
-DATA_DIR = '%(directory)s/auf_savoirs_en_partage/data/sphinx'
+DATA_DIR = '/var/lib/sphinxsearch/data'
 
 def multiline(s):
     """Place un marqueur de continuation avant chaque saut de ligne."""
     return s.replace("\n", "\\\n")
 
-def emit_source(name, sql_query, sql_query_info=None, sql_attr_multi=None, sql_attr_uint=None):
+def emit_source(name, sql_query, sql_query_info=None, sql_attr_multi=None, sql_attr_uint=None,
+                sql_attr_str2ordinal=None):
     print '''
 source %%(name)s
 {
@@ -59,6 +60,10 @@ source %%(name)s
         for attr in sql_attr_uint:
             print '    sql_attr_uint = ' + attr
     
+    if sql_attr_str2ordinal:
+        for attr in sql_attr_str2ordinal:
+            print '    sql_attr_str2ordinal = ' + attr
+
     print '}'
 
 def emit_index(name):
@@ -76,9 +81,10 @@ index %%(name)s
                     U+F9->u, U+FB->u, U+FC->u
     source = %%(name)s
     path = %%(path)s
+    stopwords = %(directory)s/auf_savoirs_en_partage/stopwords.txt
 }''' %% dict(name=name, path=os.path.join(DATA_DIR, name))
 
-emit_source('ressources', 
+emit_source('savoirsenpartage_ressources', 
             '''SELECT r.id AS id, 
                       r.title AS title, 
                       r.description AS description, 
@@ -106,7 +112,7 @@ emit_source('ressources',
             sql_attr_multi=['discipline_ids', 'region_ids']
             )
 
-emit_source('actualites',
+emit_source('savoirsenpartage_actualites',
             '''SELECT a.id_actualite AS id, 
                       a.titre_actualite AS titre, 
                       a.texte_actualite AS texte, 
@@ -124,7 +130,7 @@ emit_source('actualites',
             sql_attr_uint=['date']
            )
 
-emit_source('evenements',
+emit_source('savoirsenpartage_evenements',
             '''SELECT e.id AS id,
                       e.titre AS titre,
                       e.mots_cles AS mots_cles,
@@ -145,24 +151,27 @@ emit_source('evenements',
             sql_query_info='SELECT * from savoirs_evenement WHERE id=$id',
             sql_attr_uint=['debut'])
             
-emit_source('chercheurs',
-            '''SELECT c.id AS id,
+emit_source('savoirsenpartage_chercheurs',
+            '''SELECT c.personne_ptr_id AS id,
                       p.nom AS nom,
                       p.prenom AS prenom,
+                      CONCAT(p.nom, ' ', p.prenom) AS nom_complet,
                       c.theme_recherche AS theme_recherche,
                       c.groupe_recherche AS groupe_recherche,
                       c.mots_cles AS mots_cles,
-                      c.membre_association_francophone_details AS membre_association_francophone_details,
-                      c.membre_reseau_institutionnel_details AS membre_reseau_institutionnel_details,
-                      c.expert_oif_details AS expert_oif_details,
-                      c.membre_instance_auf_details AS membre_instance_auf_details,
+                      c.membre_instance_auf AS membre_instance_auf,
+                      c.expert_oif AS expert_oif,
+                      c.membre_association_francophone AS membre_association_francophone,
+                      c.membre_reseau_institutionnel AS membre_reseau_institutionnel,
                       IFNULL(et.nom, etablissement_autre_nom) AS etablissement,
+                      IFNULL(et.nom, etablissement_autre_nom) AS etablissement_attr,
                       pays.nom AS pays,
+                      pays.nom AS pays_attr,
                       pays.id AS pays_id,
                       r.nom AS region,
                       r.id AS region_id,
                       GROUP_CONCAT(DISTINCT d.nom_discipline) AS disciplines,
-                      CONCAT_WS(pub1.titre, pub2.titre, pub3.titre, pub4.titre) AS publications,
+                      GROUP_CONCAT(DISTINCT pub.titre) AS publications,
                       t.titre AS these,
                       GROUP_CONCAT(DISTINCT g.nom) AS groupes,
                       GROUP_CONCAT(DISTINCT ex.nom) AS expertises,
@@ -175,27 +184,30 @@ emit_source('chercheurs',
                                   WHEN 'etudiant' THEN 2
                                   WHEN 'independant' THEN 3
                                   END AS statut,
-                      (ex.id IS NULL) AS expert
+                      (ex.id IS NOT NULL) AS expert
                FROM chercheurs_chercheur c
-               INNER JOIN chercheurs_personne p ON c.personne = p.id
+               INNER JOIN chercheurs_personne p ON c.personne_ptr_id = p.id
                LEFT JOIN ref_etablissement et ON et.id = c.etablissement
-               LEFT JOIN ref_pays pays ON pays.id = IFNULL(et.pays, c.etablissement_autre_pays)
+               LEFT JOIN ref_pays pays ON pays.code = IFNULL(et.pays, c.etablissement_autre_pays)
                LEFT JOIN ref_region r ON pays.region = r.id
                LEFT JOIN discipline d ON d.id_discipline = c.discipline
-               LEFT JOIN chercheurs_publication pub1 ON pub1.id = c.publication1
-               LEFT JOIN chercheurs_publication pub2 ON pub2.id = c.publication2
-               LEFT JOIN chercheurs_publication pub3 ON pub3.id = c.publication3
-               LEFT JOIN chercheurs_publication pub4 ON pub4.id = c.publication4
-               LEFT JOIN chercheurs_publication t ON t.id = c.these
-               LEFT JOIN chercheurs_chercheurgroupe cg ON cg.chercheur = c.id
+               LEFT JOIN chercheurs_publication pub ON pub.chercheur_id = c.personne_ptr_id
+               LEFT JOIN chercheurs_these t ON t.chercheur_id = c.personne_ptr_id
+               LEFT JOIN chercheurs_chercheurgroupe cg ON cg.chercheur = c.personne_ptr_id
                LEFT JOIN chercheurs_groupe g ON g.id = cg.groupe
-               LEFT JOIN chercheurs_expertise ex ON ex.chercheur_id = c.id
-               GROUP BY c.id''',
+               LEFT JOIN chercheurs_expertise ex ON ex.chercheur_id = c.personne_ptr_id
+               WHERE p.actif
+               GROUP BY c.personne_ptr_id''',
             sql_query_info='SELECT * from chercheurs_chercheur WHERE id=$id',
             sql_attr_multi=['groupe_ids'],
-            sql_attr_uint=['pays_id', 'region_id', 'nord_sud', 'date_modification', 'statut', 'expert'])
+            sql_attr_uint=['pays_id', 'region_id', 'nord_sud',
+                           'date_modification', 'statut', 'expert',
+                           'membre_instance_auf', 'expert_oif',
+                           'membre_association_francophone',
+                           'membre_reseau_institutionnel'],
+            sql_attr_str2ordinal=['nom_complet', 'etablissement_attr', 'pays_attr'])
                       
-emit_source('sites',
+emit_source('savoirsenpartage_sites',
             '''SELECT s.id AS id,
                       s.titre AS titre,
                       s.description AS description,
@@ -205,7 +217,8 @@ emit_source('sites',
                       GROUP_CONCAT(DISTINCT d.nom_discipline) AS disciplines,
                       GROUP_CONCAT(DISTINCT p.nom) AS pays,
                       GROUP_CONCAT(DISTINCT p.id) AS pays_ids,
-                      GROUP_CONCAT(DISTINCT r.nom) AS regions
+                      GROUP_CONCAT(DISTINCT r.nom) AS regions,
+                      TO_DAYS(s.date_maj) AS date_maj
                FROM sitotheque_site s
                LEFT JOIN sitotheque_site_discipline sd ON sd.site_id = s.id
                LEFT JOIN discipline d ON d.id_discipline = sd.discipline_id
@@ -213,23 +226,12 @@ emit_source('sites',
                LEFT JOIN ref_region r ON r.id = p.region
                GROUP BY s.id''',
             'SELECT * FROM sitotheque_site WHERE id=$id',
-            sql_attr_multi=['pays_ids'])
-
-emit_index('actualites')
-emit_index('ressources')
-emit_index('evenements')
-emit_index('chercheurs')
-emit_index('sites')
-
-print '''
-indexer
-{
-    mem_limit = 256M
-}
+            sql_attr_multi=['pays_ids'],
+            sql_attr_uint=['date_maj']
+           )
 
-searchd
-{
-    listen = 127.0.0.1:9312
-    pid_file = /var/run/sphinx/sphinx-savoirsenpartage.pid
-    log = /var/log/sphinx/searchd-savoirsenpartage.log
-}'''
+emit_index('savoirsenpartage_actualites')
+emit_index('savoirsenpartage_ressources')
+emit_index('savoirsenpartage_evenements')
+emit_index('savoirsenpartage_chercheurs')
+emit_index('savoirsenpartage_sites')