Question

J'utilise le fichier (Java) Surligneur pour Lucene (dans le paquet Sandbox) pendant un certain temps. Cependant, ce n'est pas vraiment très précis lorsqu'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.

Cependant, cela n’agit pas bien avec des requêtes plus complexes. Dans le cas le plus simple, des requêtes de phrases telles que "Dépassement de pile". correspondra à 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 ici , mais c'est arrivé avec beaucoup de mises en garde de performance, et à la fin de la journée était tout simplement inutilisable. La performance est particulièrement un problème sur les requêtes génériques. Cela est dû à la façon dont fonctionne la mise en évidence; au lieu de travailler uniquement sur la chaîne de requête et le texte, elle les analyse comme le ferait Lucene, puis elle recherchera tous les correspondances effectuées par Lucene; Malheureusement, cela signifie que, pour certaines requêtes génériques, il peut rechercher des correspondances avec plus de 2000 clauses de documents volumineux, et ce n'est tout simplement pas assez rapide.

Existe-t-il une implémentation plus rapide d’un surligneur précis?

Était-ce utile?

La solution

Il existe un nouveau surligneur plus rapide (doit être corrigé mais fera partie de la version 2.9)

https://issues.apache.org/jira/browse/LUCENE-1522

et un référence arrière à cette question

Autres conseils

Vous pourriez envisager d’utiliser Solr. http://lucene.apache.org/solr

Solr est une sorte d’application de recherche générique qui utilise Lucene et supporte la surbrillance. Il est possible que la mise en évidence dans Solr soit utilisable en tant qu'API en dehors de Solr. Vous pouvez également regarder comment Solr le fait pour s’inspirer.

J'ai lu des articles sur le sujet et suis tombé sur spanQuery qui vous renverrait l'étendue du ou des termes correspondants dans le champ correspondant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top