Il est fortement conseillé de faire une sauvegarde de la base de données et de vérifier la validité de la sauvegarde en la restaurant avant la migration en 3.5.
Voici les éléments à étudier ou a prendre en compte avant le passage en 3.5.
La table notices_mots_global_index
était déjà existante dans PMB (mais peu utilisée) pour calculer la fréquence des mots afin de proposer les mots vides en autorité
> sémantique
.
Le structure de cette table est modifiée lors de la mise à jour des données. Comme elle contient un grand nombre de lignes, la table notices_mots_global_index
est tronquée (c.a.d. vidée) avant la modification de sa structure pour éviter des temps d'attente trop longs.
Cette opération est réalisée en v5.02 du noyau de la base de données.
Si après la ré-indexation de la base de données, vous changez le paramètre général bdd_version
pour une version antérieure à v5.02
, l'index sera écrasé et une ré-indexation complète est nécessaire.
Après la mise à jour de la base de données, il est impératif de ré-indexer la totalité des champs en Administration
> Outils
> Nettoyage de base
. Cochez
Réindexer l'index global
Réindexer tous les champs de recherche
Et lancez la ré-indexation. Attention, la ré-indexation est très longue (6 à 8 heures pour 100 000 notices).
Si vous n'avez jamais personnalisé votre recherche multi-critère, ce paragraphe ne vous concerne pas.
Si vous disposez d'un fichier opac_css/includes/search_queries/search_fields_subst.xml
qui personnalise la recherche multi-critères, des modifications sont à apporter dans les critères de recherche BOOLEAN
.
Exemple pour le titre
Trouver le critère de recherche booléen sur le titre
Repérez dans le fichier la ligne : <field title="msg:title_search" id="1" separator="msg:champs_principaux_query">.
Après cette ligne, recherchez la première ligne commençant par <query for="BOOLEAN" booleanSearch="yes">
Convertir le critère à la nouvelle recherche
Dans la ligne <query for="BOOLEAN" booleanSearch="yes"> repérée, remplacez l'attribut booleanSearch="yes"
par wordSearch="yes"
Remplacez le bloc sous le tag query repéré précédemment :
<main><![CDATA[select notice_id, !!pert_term!! as pert from notices where !!where_term!! group by notice_id order by pert desc, index_serie, tnvol, index_sew]]></main>
<table>notices</table>
<index_l>index_wew</index_l>
<index_i>index_sew</index_i>
<id_field>notice_id</id_field>
Par :
<class>searcher_title</class>
Au final, vous devez obtenir pour le critère booléen :
<query for="BOOLEAN" wordSearch="yes">
<class>searcher_title</class>
</query>
Vous pouvez répéter l'opération pour tous les critères BOOLEAN
dans le tableau ci-dessous. N'oubliez pas de changer l'attribut booleanSearch en wordSearch !
id du champ | title | classe de recherche |
---|---|---|
42 | msg :global_search | <class>searcher_all_fields</class> |
2 | msg:author_search | <class>searcher_authors</class> |
3 | msg:publisher_search | <class>searcher_publishers</class> |
4 | msg:coll_search | <class>searcher_collection</class> |
5 | msg:subcoll_search | <class>searcher_subcollection</class> |
6 | msg:serie_query | <class>searcher_serie</class> |
51 | msg:titre_uniforme_search | <class>searcher_uniform_title</class> |
7 | msg:note_generale_search | <class>searcher_general_note</class> |
8 | msg:note_contenu_search | <class>searcher_contents_note</class> |
9 | msg:note_resume_query | <class>searcher_abstract</class> |
10 | msg:toutes_notes_query | <class>searcher_notes</class> |
11 | msg:categories_search | <class>searcher_categorie</class> |
12 | msg:indexint_search | <class>searcher_indexint</class> |
13 | msg:keyword_search | <class>searcher_keywords</class> |
Vous pouvez aussi ajouter la recherche booléenne aux champs personnalisés.
Repérer la zone des champs personnalisés concernée
Dans le fichier repérez la ligne <dynamicFields>
Sous <fieldtype="notices" prefix="d"> ou directement sous <dynamicFields>, repérez la ligne <field dataType="small_text" id="1">.
Ajouter le critère de recherche booléen
Juste sous la ligne <field dataType="small_text" id="1">, insérez les trois lignes :
<query for="BOOLEAN" wordSearch="yes" searchableOnly="yes" notAllowedFor="list,query_list,date,external,resolve">
<class>searcher_pfield</class>
</query>
Répétez la même opération pour le deuxième type de champ personnalisé
Repérez la ligne <field dataType="text" id="2"> et insérez le même tag <query [...] que pour le champ précédent.
Si votre recherche simple dans l'OPAC n'est pas personnalisée (c'est à dire pas de filtrages autre que le type de document au dessus de la case de recherche), ce paragraphe ne vous concerne pas.
Si vous utilisez un fichier de recherche personnalisé dans l'OPAC (vérifiez le paramètre Opac
> search_other_function
), le fichier doit être modifié pour fonctionner correctement avec la nouvelle recherche.
Nous avons fait les adaptations sur les fichiers présents par défaut dans PMB (comme mrps.inc.php
). Si vous utilisez un de ces fichiers, tout doit fonctionner normalement après la mise à jour.
Dans le cas où vous avez un fichier personnalisé, désactivez-le (videz la valeur du paramètre). Une documentation spécifique est en cours de rédaction pour vous permettre de l'adapter.