2012-08-29 6 views
1

Avoir le cas d'utilisation, où les données sont indexées via lucene pour la recherche. Toutes les 12 heures, l'index actuel est archivé dans un fichier zip et un nouvel index est lancé à nouveau. Puisque notre taux d'entrée de données est assez élevé, nous devons faire le zipping pour aider le stockage. Nous utilisons java.util.zip pour compresser et décompresser lors de la recherche.Archivage des index lucene

Maintenant, le problème est quand quelqu'un cherche dans les données au cours de la dernière semaine, un énorme temps est pris pour décompresser. Serait génial si quelqu'un peut me suggérer des moyens meilleurs et plus rapides pour décompresser. Je pense au LZMA de 7-zip, mais certaines entrées seraient très utiles. Dans le même temps, zipping la bonne approche? Ai-je le choix? Nous avons une base de code Java et vos entrées sont attendues.

+0

êtes-vous décomprimer 12 heures passées index à chaque demande? – jpountz

+0

Non! Lorsque le besoin s'en fait sentir. Si l'utilisateur demande 100 résultats et que je reçois 100 dans le premier index, alors je n'ai pas besoin de le faire. Au cas où il paginerait à 200 et que je n'obtiens pas les résultats désirés dans l'index ouvert, alors je devrais ouvrir l'archive! – Greenhorn

Répondre

4

LZMA a une meilleure compression, mais se décompresse encore plus lentement.

Vous pouvez aller dans l'autre sens et accepter une compression moins bonne pour obtenir une décompression plus rapide. Vous pouvez regarder lz4 pour cela. Il décompresse environ quatre à cinq fois plus vite, mais compresse à quelque chose d'environ 50% plus grand (votre kilométrage peut varier). Bien qu'il existe un mode de compression élevée (HC) pour lz4 qui passe plus de temps à compresser et qui fait mieux, mais qui se décompose encore très rapidement.