90 votes

Comment Lucene travail

Je voudrais savoir comment recherche lucene fonctionne si vite. Je ne trouve pas utile de docs sur le web. Si vous avez quoi que ce soit (à court de lucene code source) pour lire, faites le moi savoir.

Une requête de recherche de texte à l'aide de mysql5 de recherche de texte avec index dure environ 18 minutes dans mon cas. Une recherche lucene pour la même requête prend moins d'une seconde.

77voto

bmargulies Points 49855

Lucene est une inversion de l'index de texte intégral. Cela signifie qu'il prend tous les documents, les divise en mots, puis crée un index pour chaque mot. Depuis que l'indice est une chaîne de caractères exacte-match, non ordonnée, il peut être extrêmement rapide. Hypothétiquement, un SQL non ordonnée de l'indice varchar champ peut être tout aussi rapide, et en fait, je pense que vous trouverez les grandes bases de données peuvent faire une simple chaîne de l'égalité des requêtes très rapidement dans ce cas.

Lucene ne pas optimiser pour le traitement des transactions. Lorsque vous ajoutez un document, il n'a pas besoin de s'assurer que les requêtes de voir instantanément. Et il n'a pas besoin d'optimiser les mises à jour des documents existants.

Cependant, à la fin de la journée, si vous voulez vraiment savoir, vous avez besoin pour lire la source. Les deux choses que vous faites référence sont open source, après tout.

36voto

alienCoder Points 463

Lucene crée un gros indice. L'index contient mot id, pas de docs où le mot est présent, la position du mot dans ces documents. Ainsi, lorsque vous donnez un seul mot de la requête, il fouille l'index (O(1) le temps de la complexité). Alors le résultat est classé à l'aide de différents algorithmes. Pour groupe de mots de requête, il suffit de prendre l'intersection de l'ensemble des fichiers où les mots sont présents. Ainsi, lucene est très très rapide.

Pour plus d'informations, lisez cet article par Google deelopers- http://infolab.stanford.edu/~backrub/google.html

21voto

duffymo Points 188155

En un mot: l'indexation.

Lucene crée un index de votre document qui permet de rechercher beaucoup plus rapidement.

C'est la même différence entre une liste de O(N) structure de données et d'une table de hachage O(1) structure de données. La liste a de marcher à travers l'ensemble de la collection pour trouver ce que vous voulez. La table de hachage est un indice qui permet de savoir exactement où l'élément souhaité est et simplement le chercher.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X