J'ai utilisé le (Java) Highlighter for Lucene (dans le paquet Sandbox) depuis un certain temps. Cependant, ce n'est pas vraiment très précis quand il s'agit de faire correspondre les termes corrects dans les résultats de recherche - cela fonctionne bien pour les requêtes simples, par exemple la recherche de deux mots distincts mettra en évidence les deux fragments de code dans les résultats.Existe-t-il un surligneur rapide et précis pour Lucene?
Cependant, il n'agit pas bien avec des requêtes plus complexes. Dans le cas le plus simple, les requêtes de phrase telles que "Stack Overflow" correspondent à toutes les occurrences de Stack ou Overflow dans la surbrillance, ce qui donne l'impression à l'utilisateur que cela ne fonctionne pas très bien.
J'ai essayé d'appliquer le correctif here mais avec de nombreuses mises en garde sur les performances et, à la fin de la journée, j'étais complètement inutilisable. La performance est surtout un problème sur les requêtes génériques. Cela est dû à la façon dont la mise en évidence fonctionne; au lieu de simplement travailler sur la chaîne de requête et le texte, il l'analyse comme Lucene le ferait et cherche ensuite toutes les correspondances que Lucene a faites; Malheureusement, cela signifie que pour certaines requêtes génériques, il peut rechercher des correspondances avec des clauses 2000+ sur des documents volumineux, et ce n'est tout simplement pas assez rapide.
Y a-t-il une implémentation plus rapide d'un surligneur précis?
plus rapidement surligneur (doit être patché en mais fera partie de version 2.9) Le « surligneur pour Lucene » lien actuellement cassé. – pro
Merci d'avoir signalé cela, j'ai corrigé le lien. –
Maintenant que Lucene 3.0.0 est sorti, vous devriez trouver que tout mettre à jour pour que ça fonctionne. TOUTEFOIS - attention, le surligneur a maintenant aussi une dépendance à la mémoire de lucene de contrib (cela n'apparaîtra que lors de la mise en surbrillance pour des correspondances exactes) –