Gestion des caches
Différents caches sont utilisés dans le module d'indexation. Ils servent tous à améliorer les performances de la recherche. Ils sont définis dans le fichier ehcache.xml placé dans le répertoire properties. Le fichier se présente comme suit :
<ehcache> <!-- Sets the path to the directory where cache .data files are created. If the path is a Java System Property it is replaced by its value in the running VM. The following properties are translated: user.home - User's home directory user.dir - User's current working directory java.io.tmpdir - Default temp file path --> <diskStore path="java.io.tmpdir"/> <!--Default Cache configuration. These will applied to caches programmatically created through the CacheManager. The following attributes are required for defaultCache: maxInMemory - Sets the maximum number of objects that will be created in memory eternal - Sets whether elements are eternal. If eternal, timeouts are ignored and the element is never expired. timeToIdleSeconds - Sets the time to idle for an element before it expires. i.e. The maximum amount of time between accesses before an element expires Is only used if the element is not eternal. Optional attribute. A value of 0 means that an Element can idle for infinity timeToLiveSeconds - Sets the time to live for an element before it expires. i.e. The maximum time between creation time and when an element expires. Is only used if the element is not eternal. overflowToDisk - Sets whether elements can overflow to disk when the in-memory cache has reached the maxInMemory limit. --> <cache name="ori-oai-indexing_results" maxElementsInMemory="2" eternal="false" timeToIdleSeconds="900" timeToLiveSeconds="900" diskPersistent="true" overflowToDisk="true" /> <cache name="ori-oai-indexing_fragments" maxElementsInMemory="5" eternal="false" timeToIdleSeconds="900" timeToLiveSeconds="900" diskPersistent="true" overflowToDisk="true" /> <cache name="ori-oai-indexing_notices" maxElementsInMemory="5" eternal="false" timeToIdleSeconds="900" timeToLiveSeconds="900" diskPersistent="true" overflowToDisk="true" /> <cache name="ori-oai-indexing_nbResults" maxElementsInMemory="300" eternal="false" timeToIdleSeconds="7200" timeToLiveSeconds="7200" diskPersistent="true" overflowToDisk="true" /> <defaultCache maxElementsInMemory="300" eternal="false" timeToIdleSeconds="7200" timeToLiveSeconds="7200" overflowToDisk="true" diskPersistent="false" diskExpiryThreadIntervalSeconds="60" memoryStoreEvictionPolicy="FIFO" /> </ehcache>
Quatre caches sont présents dans Ori-Oai-Indexing :
- Le cache de la recherche par attributs et de la recherche searchXMLDocs appelé ori-oai-indexing_results
- Le cache des fragments de la recherche plein texte appelé ori-oai-indexing_fragments
- Le cache de la recherche des fiches XML appelé ori-oai-indexing_notices
- Le cache du nombre de résultats des recherches appelé ori-oai-indexing_nbResults
Il vous est possible de modifier la durée de vie de ces caches en modifiant les valeurs timeToIdleSeconds et TimeToLiveSeconds. Par défaut trois de ces caches sont réglés à 15 minutes et le cache du nombre de résultats est réglé à deux heures.
Par ailleurs le cache persistent est placé dans le répertoire temporaire du Tomcat du module d'indexation.
Dans la version 1.5 la plupart des caches ont été désactivés. Seul le cache "ori-oai-indexing_nbResults" reste actif. Ceci a pour objectif de laisser Lucene gérer lui-même les caches.