sdx-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sdx-developers] Optimisation des index Lucene : travaux a venir


From: Martin Sevigny
Subject: [sdx-developers] Optimisation des index Lucene : travaux a venir
Date: Thu, 15 Jul 2004 08:58:46 +0200
User-agent: Mozilla Thunderbird 0.6 (Windows/20040502)

Bonjour,

Sauf avis contraire, nous allons ajouter ajouter quelques
"fonctionnalités" à SDX pour mieux gérer l'optimisation des index Lucene.

Pour rappel : quand on modifie un index Lucene (suppression ou ajout),
cela se fait efficacement mais l'index résultant n'est pas "optimisé",
et il n'est donc pas "tout à fait" aussi performant en recherche. Mais
les nouveaux documents sont cherchables, et les document supprimés ne le
sont plus.

Optimiser un index consiste à l'optimiser (!) de manière à ce qu'il
redevienne le plus efficace possible en recherche. Mais cela a un coût
(important pour les gros index). Donc il faut cherche à optmiser (!) les
moments où l'on fait de l'optimisation dans Lucene, et donc dans SDX.

Dans SDX, l'index est _systématiquement_ optimisé après chaque lot de
documents ajouté ou supprimé.

Par exemple si je fais:

<sdx:uploadDocuments/> => il sera optimisé à tous les 25 documents
(valeur par défaut)

<sdx:uploadDocuments batch="100"/> => il sera optimisé à tous les 100
documents

<sdx:uploadDocument/> => il sera optimisé après ce document

Ce dernier cas est intéressant. Si on a une très grande base de
documents donc index Lucene et qu'on utilise cette méthode, il est
optimisé après chaque ajout d'un document ; bref, il peut passer son
temps à s'optimiser...

Notre objectif est de rendre cela plus souple. Comment? En n'optimisant
pas systématiquement, mais plutôt en laissant un certain contrôle au
développeur de l'optmisation, et ce de plusieurs manières.

D'abord, si on ne fait rien de spécial, rien ne change. Donc totale
compatibilité avec les anciennes applications. Evidemment.

Ensuite, on peut demander à SDX de ne pas optimiser à tous les lots en
le spécifiant dans le application.xconf:

<sdx:documentBase optimize="true|false"> => ici le "true" est équivalent
à la situation actuelle.

Si on fait cela et rien d'autre, l'index ne sera jamais optimisé... Mais
évidemment, on ajoutera trois manières (ou d'autres si vous en voyez) de
 demander une optmisation:

1) Périodiquement, avec une information de type CRON, un peu comme pour
le moissonneur OAI. On pourrait ainsi demander d'optmiser à toutes les
nuits à 02h00, ce qui serait pas mal pour une grosse base de documents
dont les ajouts se font un par un.

2) "Manuellement", c'est-à-dire avoir une fonction dans l'interface
d'administration qui permet de déclencher une optimisation sur une base
de documents.

3) Explicitement dans l'API XSP, c'est-à-dire ajouter un paramètre
optimize="true|false" lorsqu'on fait des indexations / suppressions. Par
exemple:

<sdx:uploadDocuments optimisze="true"/>

ou

<sdx:uploadDocument optimizParam="o"/>

Bien entendu, ces paramètres seraient prioritaires par rapport aux
indications fournies dans le application.xconf.

Des objections? Des remarques complémentaires?

Martin Sévigny

PS COmme toujours, les "noms" ne sont pas fixes, les commentaires
là-dessus sont bienvenus.







reply via email to

[Prev in Thread] Current Thread [Next in Thread]