Je recherche des suggestions d'algorithmes/techniques pour effectuer une première recherche dans un document XML en continu.Algorithmes de recherche dans un flux XML
<foo>
<bar name="aaa" >
<grah name="aab" />
..
</bar>
<bar name="bbb" />
<bar name="ccc" />
<bar name="ddd" />
<bar name="eee" />
... up to 10,000 entries
</foo>
Le nombre d'éléments de 1er niveau est hors de mon contrôle. L'utilisation de xml est également hors de mon contrôle. Je peux pré-traiter le xml, je peux indexer le xml mais je ne peux pas (pour l'avenir prévisible) charger le document xml entier dans la mémoire sur une base par demande.
Je suis actuellement à la recherche séquentielle en utilisant la capacité de lecture de flux de libxml pour effectuer cette tâche. Il consomme une quantité plus ou moins fixe de RAM/requête et est très réactif généralement pour tout moins de 3k lignes, et la mise en cache des résultats les plus populaires aide mais presque tous les éléments de haut niveau sont touchés à un moment donné.
Récemment, nous avons eu à traiter un certain nombre de fichiers vraiment volumineux où les éléments de niveau 1 avaient jusqu'à 10 000 éléments et une correspondance plus proche de la fin est inacceptable en ce qui concerne la réponse du serveur. Jusqu'ici j'ai vu Introselect et Quickselect qui peuvent réduire l'espace de recherche, à quelque chose de raisonnable. J'ai pensé que je verrais s'il y a d'autres idées ou algorithmes que j'ai oubliés avant de commencer à écrire du code.