Я уже некоторое время использую (Java) Highlighter для Lucene (в пакете с песочницей). Однако это не совсем точно, когда речь идет о сопоставлении правильных терминов в результатах поиска - это хорошо работает для простых запросов, например, поиск двух отдельных слов выделит оба фрагмента кода в результатах.
Тем не менее, он не работает хорошо с более сложными запросами. В простейшем случае запросы фразы, такие как «Переполнение стека», будут соответствовать всем вхождениям стека или переполнения при выделении, что создает у пользователя впечатление, что оно работает не очень хорошо.
Я пытался применить исправление здесь , но это сопровождалось множеством предупреждений о производительности, и в конце концов было просто непригодным для использования. Производительность особенно важна для подстановочных запросов. Это связано с тем, как работает подсветка; вместо того, чтобы просто работать над строкой запроса и текстом, он анализирует ее, как это делает Lucene, а затем ищет все совпадения, которые сделал Lucene; к сожалению, это означает, что для определенных запросов с подстановочными знаками он может искать совпадения с предложениями 2000+ для больших документов, и это просто недостаточно быстро.
Есть ли более быстрая реализация точного маркера?