Présentation
Ce guide explique les paramètres avancés du robot d’indexation de Fess. Pour la configuration de base du robot d’indexation, consultez Configuration du robot d’indexation : exploration Web, serveur de fichiers et bases de données.
Avertissement
Les paramètres de cette page peuvent affecter l’ensemble du système. Lors de la modification des paramètres, testez-les suffisamment avant de les appliquer à l’environnement de production.
Configuration générale
Emplacement des fichiers de configuration
La configuration détaillée du robot d’indexation s’effectue dans les fichiers suivants.
Configuration principale :
/etc/fess/fess_config.properties(ouapp/WEB-INF/classes/fess_config.properties)Configuration de la longueur du contenu :
app/WEB-INF/classes/crawler/contentlength.xmlConfiguration des composants :
app/WEB-INF/classes/crawler/container.xml
Script par défaut
Configure le langage de script par défaut du robot d’indexation.
| Propriété | Description | Par défaut |
|---|---|---|
crawler.default.script | Langage de script du robot d’indexation | groovy |
Pool de threads HTTP
Configuration du pool de threads du robot d’indexation HTTP.
| Propriété | Description | Par défaut |
|---|---|---|
crawler.http.thread_pool.size | Taille du pool de threads HTTP | 0 |
Configuration du traitement des documents
Configuration de base
| Propriété | Description | Par défaut |
|---|---|---|
crawler.document.max.site.length | Longueur maximale en caractères du champ nom de site | 100 |
crawler.document.site.encoding | Encodage du site du document | UTF-8 |
crawler.document.unknown.hostname | Valeur de remplacement pour un nom d’hôte inconnu | unknown |
crawler.document.use.site.encoding.on.english | Utiliser l’encodage du site pour les documents en anglais | false |
crawler.document.append.data | Ajouter des données au document | true |
crawler.document.append.filename | Ajouter le nom de fichier au document | false |
Exemple de configuration
Configuration du traitement des mots
| Propriété | Description | Par défaut |
|---|---|---|
crawler.document.max.alphanum.term.size | Longueur maximale des mots alphanumériques | 20 |
crawler.document.max.symbol.term.size | Longueur maximale des mots symboles | 10 |
crawler.document.duplicate.term.removed | Suppression des mots en double | false |
Exemple de configuration
Note
L’augmentation de max.alphanum.term.size permet d’indexer complètement les longs ID, tokens, URLs, etc., mais la taille de l’index augmentera.
Configuration du traitement des caractères
| Propriété | Description | Par défaut |
|---|---|---|
crawler.document.space.chars | Définition des caractères d’espacement | u0009u000A... |
crawler.document.fullstop.chars | Définition des caractères de ponctuation | u002eu06d4... |
Exemple de configuration
Configuration des protocoles
Protocoles supportés
| Propriété | Description | Par défaut |
|---|---|---|
crawler.web.protocols | Protocoles d’indexation Web | http,https |
crawler.file.protocols | Protocoles d’indexation de fichiers | file,smb,smb1,ftp,storage,s3,gcs |
crawler.crawling.data.encoding | Encodage des données de crawl | UTF-8 |
Exemple de configuration
Paramètres de variables d’environnement
| Propriété | Description | Par défaut |
|---|---|---|
crawler.data.env.param.key.pattern | Motif de clé de paramètre de variable d’environnement | ^FESS_ENV_.* |
Sérialiseur de données
| Propriété | Description | Par défaut |
|---|---|---|
crawler.data.serializer | Méthode de sérialisation des données d’indexation | kryo |
Configuration de robots.txt
| Propriété | Description | Par défaut |
|---|---|---|
crawler.ignore.robots.txt | Ignorer robots.txt | false |
crawler.ignore.robots.tags | Ignorer les balises meta robots | false |
crawler.ignore.content.exception | Ignorer les exceptions de contenu | true |
Avertissement
Définir crawler.ignore.robots.txt=true peut violer les conditions d’utilisation du site. Soyez prudent lors de l’indexation de sites externes.
Configuration de la gestion des erreurs
| Propriété | Description | Par défaut |
|---|---|---|
crawler.failure.url.status.codes | Codes d’état HTTP considérés comme des échecs (séparés par des virgules) | 404,403,410 |
Configuration de la surveillance système
| Propriété | Description | Par défaut |
|---|---|---|
crawler.system.monitor.interval | Intervalle de surveillance système (secondes) | 60 |
Configuration des threads actifs
| Propriété | Description | Par défaut |
|---|---|---|
crawler.hotthread.ignore_idle_threads | Ignorer les threads inactifs | true |
crawler.hotthread.interval | Intervalle d’instantané | 500ms |
crawler.hotthread.snapshots | Nombre d’instantanés | 10 |
crawler.hotthread.threads | Nombre de threads surveillés | 3 |
crawler.hotthread.timeout | Timeout | 30s |
crawler.hotthread.type | Type de surveillance | cpu |
Exemple de configuration
Configuration des métadonnées
| Propriété | Description | Par défaut |
|---|---|---|
crawler.metadata.content.excludes | Métadonnées à exclure | resourceName,X-Parsed-By... |
crawler.metadata.name.mapping | Mappage des noms de métadonnées | title=title:string... |
Configuration du robot d’indexation HTML
Configuration XPath
Configuration XPath pour extraire les éléments HTML.
| Propriété | Description | Par défaut |
|---|---|---|
crawler.document.html.content.xpath | XPath du contenu | //BODY |
crawler.document.html.lang.xpath | XPath de la langue | //HTML/@lang |
crawler.document.html.digest.xpath | XPath du résumé | //META[@name='description']/@content |
crawler.document.html.canonical.xpath | XPath de l’URL canonique | //LINK[@rel='canonical'][1]/@href |
Exemple de configuration
Exemples de XPath personnalisés
Traitement des balises HTML
| Propriété | Description | Par défaut |
|---|---|---|
crawler.document.html.pruned.tags | Balises HTML à supprimer | noscript,script,style,header,footer,aside,nav,a[rel=nofollow] |
crawler.document.html.max.digest.length | Longueur maximale du résumé | 120 |
crawler.document.html.default.lang | Langue par défaut | (vide) |
Exemple de configuration
Filtre de motifs d’URL
| Propriété | Description | Par défaut |
|---|---|---|
crawler.document.html.default.include.index.patterns | Motifs d’URL à inclure dans l’index | (vide) |
crawler.document.html.default.exclude.index.patterns | Motifs d’URL à exclure de l’index | (?i).*(css|js|jpeg...) |
crawler.document.html.default.include.search.patterns | Motifs d’URL à inclure dans les résultats de recherche | (vide) |
crawler.document.html.default.exclude.search.patterns | Motifs d’URL à exclure des résultats de recherche | (vide) |
Exemple de configuration
Configuration du robot d’indexation de fichiers
Configuration de base
| Propriété | Description | Par défaut |
|---|---|---|
crawler.document.file.name.encoding | Encodage des noms de fichiers | (vide) |
crawler.document.file.no.title.label | Étiquette pour les fichiers sans titre | No title. |
crawler.document.file.ignore.empty.content | Ignorer le contenu vide | false |
crawler.document.file.max.title.length | Longueur maximale du titre | 100 |
crawler.document.file.max.digest.length | Longueur maximale du résumé | 200 |
Exemple de configuration
Traitement du contenu
| Propriété | Description | Par défaut |
|---|---|---|
crawler.document.file.append.meta.content | Ajouter les métadonnées au contenu | true |
crawler.document.file.append.body.content | Ajouter le corps au contenu | true |
crawler.document.file.default.lang | Langue par défaut | (vide) |
Exemple de configuration
Filtre de motifs d’URL de fichiers
| Propriété | Description | Par défaut |
|---|---|---|
crawler.document.file.default.include.index.patterns | Motifs à inclure dans l’index | (vide) |
crawler.document.file.default.exclude.index.patterns | Motifs à exclure de l’index | (vide) |
crawler.document.file.default.include.search.patterns | Motifs à inclure dans les résultats de recherche | (vide) |
crawler.document.file.default.exclude.search.patterns | Motifs à exclure des résultats de recherche | (vide) |
Exemple de configuration
Remplacement de la détection du type MIME
Par défaut, Fess utilise Apache Tika pour la détection du type MIME basée sur le contenu. Dans certains cas, la détection basée sur le contenu peut produire des résultats incorrects. Par exemple, les fichiers SQL Oracle commençant par des commentaires REM peuvent être détectés à tort comme des fichiers batch (application/x-bat) car le mot-clé REM correspond au motif magique des fichiers batch.
La propriété crawler.document.mimetype.extension.overrides permet de remplacer la détection du type MIME en se basant sur les extensions de fichier, en contournant la détection basée sur le contenu pour des types de fichiers spécifiques.
| Propriété | Description | Par défaut |
|---|---|---|
crawler.document.mimetype.extension.overrides | Correspondances extension vers type MIME (une par ligne, format : .ext=mime/type) | (vide) |
Exemple de configuration
Chaque ligne contient une correspondance au format .ext=mime/type. Les correspondances multiples sont séparées par \n (saut de ligne). La correspondance des extensions est insensible à la casse (.SQL et .sql sont traités de la même manière).
Note
Lorsqu’une extension de fichier correspond à une entrée de cette table, le type MIME configuré est renvoyé immédiatement sans effectuer de détection basée sur le contenu. Les fichiers dont les extensions ne sont pas dans la table continuent d’utiliser la détection Tika normale.
Configuration du cache
Cache de documents
| Propriété | Description | Par défaut |
|---|---|---|
crawler.document.cache.enabled | Activer le cache de documents | true |
crawler.document.cache.max.size | Taille maximale du cache (octets) | 2621440 (2,5 Mo) |
crawler.document.cache.supported.mimetypes | Types MIME à mettre en cache | text/html |
crawler.document.cache.html.mimetypes | Types MIME traités comme HTML | text/html |
Exemple de configuration
Note
L’activation du cache affiche un lien de cache dans les résultats de recherche, permettant aux utilisateurs de consulter le contenu au moment de l’indexation.
Options JVM
Vous pouvez configurer les options JVM du processus du robot d’indexation.
| Propriété | Description | Par défaut |
|---|---|---|
jvm.crawler.options | Options JVM du robot d’indexation | -Xms128m -Xmx512m... |
Configuration par défaut
Note
Ce qui précède ne montre que les options principales. Les valeurs par défaut réelles comprennent environ 40 options couvrant les délais jcifs SMB, les paramètres Netty, la configuration Log4j, les paramètres détaillés G1GC, les paramètres PDFBox, etc. Consultez fess_config.properties pour les valeurs par défaut complètes. Lors de la personnalisation, ne modifiez que les options nécessaires et conservez les autres valeurs par défaut.
Description des principales options
| Option | Description |
|---|---|
-Xms128m | Taille initiale du tas (128 Mo) |
-Xmx512m | Taille maximale du tas (512 Mo) |
-XX:MaxMetaspaceSize=128m | Taille maximale du Metaspace (128 Mo) |
-XX:+UseG1GC | Utiliser le collecteur de déchets G1 |
-XX:MaxGCPauseMillis=60000 | Objectif de temps de pause GC (60 secondes) |
-XX:-HeapDumpOnOutOfMemoryError | Désactiver le vidage du tas en cas d’OutOfMemory |
Exemples de configuration personnalisée
Pour indexer des fichiers volumineux :
Lors du débogage :
Consultez Configuration de la mémoire pour plus de détails.
Optimisation des performances
Optimisation de la vitesse d’indexation
1. Ajustement du nombre de threads
Vous pouvez améliorer la vitesse d’indexation en augmentant le nombre d’indexations parallèles.
Cependant, faites attention à la charge sur le serveur cible.
2. Ajustement des timeouts
Pour les sites à réponse lente, ajustez les timeouts.
3. Exclusion du contenu inutile
La vitesse d’indexation s’améliore en excluant les images, CSS, fichiers JavaScript, etc.
4. Configuration de nouvelle tentative
Le nombre de nouvelles tentatives de crawl HTTP (par défaut 5) et l’intervalle entre les tentatives (par défaut 500 ms) sont des valeurs fixes intégrées et ne peuvent pas être modifiés via le champ « Paramètres de configuration » d’une configuration de crawl. Pour réduire le temps d’attente sur les URLs qui ne répondent pas, ajustez les délais d’expiration décrits ci-dessus ou excluez les URLs inutiles.
Optimisation de l’utilisation de la mémoire
1. Ajustement de la taille du tas
2. Ajustement de la taille du cache
3. Exclusion des fichiers volumineux
Consultez Configuration de la mémoire pour plus de détails.
Amélioration de la qualité de l’index
1. Optimisation du XPath
Excluez les éléments inutiles (navigation, publicités, etc.).
2. Optimisation du résumé
3. Mappage des métadonnées
Dépannage
Mémoire insuffisante
Symptômes :
OutOfMemoryErrorest enregistré dansfess_crawler.logL’indexation s’arrête en cours de route
Solutions :
Augmenter la taille du tas du robot d’indexation
Réduire le nombre de threads parallèles
Exclure les fichiers volumineux
Consultez Configuration de la mémoire pour plus de détails.
L’indexation est lente
Symptômes :
L’indexation prend trop de temps
Les timeouts se produisent fréquemment
Solutions :
Augmenter le nombre de threads (attention à la charge sur le serveur cible)
Ajuster les timeouts
Exclure les URLs inutiles
Impossible d’extraire un contenu spécifique
Symptômes :
Le texte de la page n’est pas extrait correctement
Les informations importantes ne sont pas incluses dans les résultats de recherche
Solutions :
Vérifier et ajuster le XPath
Vérifier les balises supprimées
Pour le contenu généré dynamiquement par JavaScript, envisagez une autre méthode (indexation API, etc.)
Des caractères corrompus apparaissent
Symptômes :
Des caractères corrompus apparaissent dans les résultats de recherche
Certaines langues ne s’affichent pas correctement
Solutions :
Vérifier les paramètres d’encodage
Configurer l’encodage des noms de fichiers
Vérifier les erreurs d’encodage dans les journaux
Bonnes pratiques
Valider dans un environnement de test
Avant d’appliquer en production, validez suffisamment dans un environnement de test.
Ajustement progressif
Ne modifiez pas les paramètres de manière importante en une seule fois, ajustez progressivement et vérifiez les effets.
Surveillance des journaux
Après avoir modifié les paramètres, surveillez les journaux pour vérifier qu’il n’y a pas d’erreurs ou de problèmes de performance.
Sauvegarde
Avant de modifier les fichiers de configuration, effectuez toujours une sauvegarde.
Documentation
Documentez les paramètres modifiés et leur raison.
Configuration du crawler S3/GCS
Crawler S3
Configuration pour crawler S3 et le stockage compatible S3 (comme MinIO). Ajoutez ce qui suit aux « Paramètres de configuration » dans les paramètres de crawl de fichiers.
| Paramètre | Description | Par défaut |
|---|---|---|
client.endpoint | URL du point de terminaison S3 | (Obligatoire) |
client.accessKey | Clé d’accès | (Obligatoire) |
client.secretKey | Clé secrète | (Obligatoire) |
client.region | Région AWS | us-east-1 |
client.maxContentLength | Taille maximale (octets) des objets à récupérer ; les objets plus volumineux sont ignorés | (illimité) |
client.maxCachedContentSize | Taille maximale (octets) mise en cache en mémoire ; le contenu plus volumineux utilise un fichier temporaire | 1048576 (1MB) |
client.accessTimeout | Délai d’accès (secondes). Désactivé si non défini | (illimité) |
Exemple de configuration
Crawler GCS
Configuration pour crawler Google Cloud Storage. Ajoutez ce qui suit aux « Paramètres de configuration » dans les paramètres de crawl de fichiers.
| Paramètre | Description | Par défaut |
|---|---|---|
client.projectId | ID de projet Google Cloud | (Obligatoire) |
client.credentialsFile | Chemin du fichier JSON du compte de service | (Optionnel) |
client.endpoint | Point de terminaison personnalisé | (Optionnel) |
client.maxContentLength | Taille maximale (octets) des objets à récupérer ; les objets plus volumineux sont ignorés | (illimité) |
client.maxCachedContentSize | Taille maximale (octets) mise en cache en mémoire ; le contenu plus volumineux utilise un fichier temporaire | 1048576 (1MB) |
client.accessTimeout | Délai d’accès (secondes). Désactivé si non défini | (illimité) |
Exemple de configuration
Note
Si credentialsFile est omis, la variable d’environnement GOOGLE_APPLICATION_CREDENTIALS est utilisée.
Indexation du contenu dynamique (Playwright)
Les pages rendues par JavaScript (comme les SPA) ne fournissent au robot d’indexation HTTP classique que le HTML avant rendu, si bien que leur texte n’est pas indexé. Le robot d’indexation Playwright affiche d’abord la page dans un navigateur sans interface graphique, puis récupère le contenu.
Activation
Ajoutez ce qui suit aux « Paramètres de configuration » d’une configuration de crawl web.
La partie qui suit playwright: est une expression régulière désignant les URLs à récupérer avec Playwright. Dans l’exemple ci-dessus, toutes les URLs HTTP/HTTPS sont récupérées avec Playwright. Pour n’utiliser Playwright que pour certains sites, indiquez-les comme suit.
Note
Les binaires du navigateur Playwright ne sont pas inclus dans le paquet Fess. Ils sont téléchargés lors de la première indexation ; dans un environnement sans accès au réseau externe, installez-les au préalable avec l’utilisateur OS qui exécute le robot d’indexation.
Paramètres de configuration
Les paramètres suivants s’écrivent dans les « Paramètres de configuration » d’une configuration de crawl, avec le préfixe client..
| Paramètre | Description | Par défaut |
|---|---|---|
client.renderedState | État de chargement à attendre avant de récupérer le contenu. Indiquez LOAD, DOMCONTENTLOADED ou NETWORKIDLE en majuscules | NETWORKIDLE |
client.renderedStateTimeout | Limite d’attente de renderedState (millisecondes). Une valeur inférieure ou égale à 0 utilise la valeur par défaut de Playwright (30000) | 0 |
client.navigationTimeout | Limite pour une navigation de page (millisecondes). Une valeur inférieure ou égale à 0 utilise la valeur par défaut de Playwright (30000) | (non défini) |
client.contentWaitDuration | Attente supplémentaire après avoir atteint renderedState et avant de récupérer le contenu (millisecondes) | 0 |
client.sharedClient | Partager le worker (navigateur) Playwright entre tous les clients | false |
client.blockedResourceTypes | Types de ressources que le navigateur ne doit pas récupérer (séparés par des virgules) | (vide) |
client.ignoreHttpsErrors | Ignorer les erreurs de validation des certificats HTTPS | false |
client.proxyBypass | Hôtes qui contournent le proxy (séparés par des virgules) | (vide) |
Exemple de configuration
Note
L’agent utilisateur et les en-têtes de requête définis dans la configuration de crawl sont utilisés tels quels. Les paramètres communs tels que client.proxyHost, client.proxyPort et client.maxContentLength s’appliquent également au navigateur.
Note
Un client Playwright utilise une seule page de navigateur et les requêtes y sont traitées en série. Augmenter le nombre de threads de la configuration de crawl n’accélère pas d’autant la récupération avec Playwright.
Éléments configurables uniquement dans la définition DI
Les éléments suivants ne peuvent pas être modifiés depuis les « Paramètres de configuration ». Pour les modifier, créez le fichier app/WEB-INF/classes/crawler/client+playwrightClient.xml et redéfinissez le composant playwrightClient.
| Propriété | Description | Par défaut |
|---|---|---|
browserName | Navigateur à utiliser : chromium, firefox ou webkit | chromium |
launchOptions | Options de démarrage du navigateur (BrowserType.LaunchOptions) | headless=true |
newContextOptions | Options du contexte de navigateur (Browser.NewContextOptions) | (aucun) |
downloadTimeout | Limite d’attente du téléchargement d’un fichier (secondes) | 15 |
closeTimeout | Limite d’attente de l’arrêt du navigateur (secondes) | 15 |
Exemple de configuration
Note
Redéfinir playwrightClient remplace intégralement la définition du composant fournie par le crawler/client++.xml du plugin. Les propriétés que vous n’écrivez pas reprennent leur valeur par défaut : indiquez donc toutes celles dont vous avez besoin, comme dans l’exemple ci-dessus. Ne copiez pas non plus crawler/client++.xml tel quel : le même composant serait alors enregistré deux fois et le démarrage échouerait.
Avertissement
downloadTimeout et closeTimeout sont exprimés en secondes, alors que navigationTimeout, renderedStateTimeout et contentWaitDuration sont exprimés en millisecondes. Veillez à ne pas les confondre.
Blocage des ressources inutiles
client.blockedResourceTypes reçoit, séparés par des virgules, les types de ressources que le navigateur ne doit pas récupérer. Les valeurs possibles sont les types de ressources de Playwright (stylesheet, image, media, font, script, texttrack, xhr, fetch, eventsource, websocket, manifest, other, ping, cspreport et beacon). Par défaut, rien n’est bloqué.
image, media, font, ping, beacon et cspreport constituent l’ensemble que l’on peut spécifier sans risque. Les trois derniers correspondent à du trafic de traceurs de type balise, que rien dans la page ne relit.
Ne spécifiez que les types qu’une indexation ne lit pas. Récupérer moins de ressources nécessaires à l’affichage d’une page réduit à la fois la durée de l’indexation et le volume de données transféré.
Avertissement
N’indiquez pas document. La récupération de la page elle-même serait bloquée et l’indexation ne pourrait pas aboutir : cette valeur est donc ignorée avec un avertissement.
Note
Un type absent de la liste ci-dessus donne également lieu à un avertissement. Une faute de frappe au pluriel telle que images ne correspond à aucune requête et ne bloque donc rien. La liste est l’union des types signalés par les trois moteurs de navigateur : certains ne sont jamais signalés par le navigateur utilisé. texttrack n’est signalé que par Chromium, et WebKit ne signale ni media ni manifest. Spécifier un type qui n’est pas signalé ne bloque tout simplement rien.
Note
Bloquer script ou xhr empêche le rendu par JavaScript, ce qui annule l’intérêt d’utiliser Playwright. C’est utile pour une indexation qui ne vise que des pages rendues côté serveur, mais en règle générale, choisissez parmi les types que l’on peut spécifier sans risque indiqués ci-dessus.
Changements dans 15.8
Lors d’une mise à niveau depuis la version 15.7 ou antérieure, le comportement du robot d’indexation Playwright a changé comme suit.
Agent utilisateur : l’agent utilisateur de la configuration de crawl est désormais réellement envoyé par le navigateur. Dans les versions 15.7 et antérieures, c’est la valeur par défaut du navigateur
HeadlessChrome/...qui était envoyée. Sur les sites qui adaptent leur réponse à l’agent utilisateur, le contenu récupéré peut changer.En-têtes de requête : les en-têtes de requête de la configuration de crawl sont désormais appliqués au navigateur. Lorsqu’un même nom d’en-tête apparaît plusieurs fois, les valeurs sont regroupées en une seule valeur séparée par des virgules.
Téléchargements via une redirection : l’URL enregistrée est désormais la cible de la redirection (l’URL qui a réellement renvoyé le fichier). Si la cible de la redirection est une URL hors du périmètre de l’indexation, elle est exclue comme hors périmètre.
Attente de ``renderedState`` : un dépassement du délai d’attente n’est plus considéré comme un échec ; le contenu chargé à cet instant est utilisé tel quel. Les pages qui n’atteignent jamais
NETWORKIDLEpeuvent elles aussi être indexées.Spécification des délais d’expiration :
client.navigationTimeoutetclient.renderedStateTimeout, qui limitent le temps de chargement de la page entière, ont été ajoutés.client.connectionTimeoutetclient.soTimeoutsont des délais au niveau du socket et ne s’appliquent pas au navigateur.
Informations de référence
Configuration du robot d’indexation : exploration Web, serveur de fichiers et bases de données - Configuration de base du robot d’indexation
Configuration des vignettes - Configuration des vignettes
Configuration de la mémoire - Configuration de la mémoire
Configuration des journaux - Configuration des journaux
Paramètres avancés liés à la recherche - Configuration de recherche avancée