Il semble y avoir deux parties à cela. Comprendre un algorithme décent, et l'implémenter en Java. (Pour le moment, laissons de côté l'idée que quelqu'un a déjà implémenté cela, et vous pouvez probablement trouver quelques idées.)
On dirait que nous voulons éviter les répétitions coûteuses. mais on ne sait pas où les coûts seraient. Donc, je suppose que vous devrez être prêt à comparer quelques appraisonnements candidats. Ayez également à l'esprit ce qui est "assez bon".
Commencez par la chose la plus simple à laquelle vous pouvez penser. Mesure le. Vous pourriez obtenir le résultat surprenant que c'est assez bon. Arrête toi là! Par exemple, c'est vraiment bête:
read text into String (4k, that's not too big)
for each term
use regexp to find matches in text
mais cela pourrait bien donner un temps de réponse inférieur à la seconde. Est-ce que vos utilisateurs se soucieraient vraiment si vous preniez une réponse de 200ms jusqu'à 100ms? Combien paieraient-ils pour cela?
Une autre approche. Je me demande de ceci est plus rapide?
prepare a collection of terms keyed by first word
tokenize the text
for each token
find terms that match
check for match (using look ahead for multi-word terms)
Comme pour l'implémentation en Java. Séparez des problèmes posez des questions spécifiques si vous en avez besoin.
Sonne bien. Alors qu'avez-vous fait pour tenter de résoudre cela? – AlbertoPL