, Offrez une indexation à votre IBMi avec OMNIFIND

Il existe un produit sur #IBMi qui permet d’indexer des fichiers DB (zones), des spools, des membres sources et l’IFS.

De plus en plus vous utilisez l’IFS et il peut être intéressant d’indexer les fichiers utilisateurs dans /HOME par exemple,

voici ce qu’il vous faudra faire pour démarrer avec cette solution.

Vous devez avoir le produit (gratuit) 5733OMF

la page IBM est ici

https://www.ibm.com/support/pages/omnifind-ibm-i

Vous avez plusieurs services SQL qui vont vous permettre d’administrer ce serveur

1) Vous devrez d’abord le démarrer

Vous avez un server par défaut c’est le 1

call sysproc.systs_start(1)

Pour voir si votre server est démarré vous avez un service SQL

SELECT substr(SERVERNAME, 1, 30) as serveur
, SERVERSTATUS FROM QSYS2.SYSTEXTSERVERS

Attention 0 indique démarré et 1 arrêté

vous pouvez lui donner un nom comme ceci

UPDATE QSYS2/SYSTEXTSERVERS SET SERVERNAME = ‘NOM_SERVEUR’ WHERE
SERVERID = 1

2) Vous devez créer une collection qui contiendra les éléments nécessaires à l’administration et les index par exemple

create collection omnifind

CALL SYSPROC.SYSTS_CRTCOL(‘OMNI_COL’,‘FORMAT INSO’)

Vous pouvez indiquer la fréquence de mise à jour, par défaut, pas de mise à jour automatique.

3) Vous allez ensuite créer un index, ici un index sur l’IFS

Si vous voulez indexer /HOME et les sous répertoires vous devrez utiliser la procédure suivante

SET schema pour mettre OMNI_COL comme collection par défaut

CALL MYCOLLECTION.ADD_IFS_STMF_OBJECT_SET(‘/home/’);

3) Vous allez devoir lancer la mise à jour de l’indexation

call SYSPROC.SYSTS_UPDATE(‘OMNI_COL’ , ‘IFS_OMNI_COL’)

ca peut prendre du temps

4) Vous avez une procédure qui permet de rechercher SEARCH

Vous devrez être autorisé à cette procédure

SET CURRENT SCHEMA OMNI_COL

GRANT EXECUTE ON PROCEDURE SEARCH(VARCHAR) TO QPGMR

set schema omni_col ;

CALL SEARCH(‘TEXT’)

la procédure vous renvoi un result SET que vous pouvez intégrer dans un programme RPGLE par exemple

5) Vous pouvez utiliser un dictionnaire de synonyme

Le fichier modèle se trouvera ici

/QOpenSys/QIBM/ProdData/TextSearch/server1/config/spell/Synonymes.xml

<?xml version="1.0" encoding="UTF-8"?>
<synonymgroups version="1.0">
<synonymgroup>
<synonym>cheval</synonym>
<synonym>chevaux</synonym>
</synonymgroup>
 ...

</synonymgroups>

Pour importer

Vous devrez connaitre le nom de la collection

select * from qsys2.systextindexes

Puis passer le scripte sh suivant pour faire l’importation

QSH

cd /Qopensys/QIBM/ProdData/TextSearch/server1/bin

synonymTool.sh importSynonym

-synonymFile /QOpenSys/QIBM/ProdData/TextSearch/server1/config/spell/Synonymes.xml

-collectionName ‘nom_votre_collection’ true

-configPath /QOpenSys/QIBM/ProdData/TextSearch/server1/config

Quand vous rechercherez cheval, vous aurez les fichiers qui ont également chevaux dans le texte

Conclusion:

Ca peut être intéressant d’utiliser ce type d’index pour améliorer la performance de recherche
le produit est gratuit testez le !