Я использую Highlighter Lucene, чтобы выделить части строки. Код ниже, кажется, работает хорошо для поиска слов с основанием, но не для соответствия префикса.
EnglishAnalyzer analyzer = new EnglishAnalyzer(Version.LUCENE_34);
QueryParser parser = new QueryParser(Version.LUCENE_30, "", analyzer);
Query query = parser.parse(pQuery);
QueryScorer scorer = new QueryScorer(query);
Fragmenter fragmenter = new SimpleSpanFragmenter(scorer, 40);
Highlighter highlighter = new Highlighter(scorer);
highlighter.setTextFragmenter(fragmenter);
String[] frags = highlighter.getBestFragments(analyzer, "", pText, 4);
Я читал в нескольких разных местах, мне нужно вызвать Query.rewrite, чтобы заставить работать префикс соответствия. Этот метод принимает аргумент IndexReader, хотя я не уверен, как его получить. Во всех примерах, которые я обнаружил, вызов Query.rewreite не показывает, откуда появился IndexReader. Я добавлю, что это единственный код Lucene, который я использую. Я не использую Lucene для поиска, просто для выделения.
Как мне создать IndexReader и возможно ли его создать, если я использую Lucene таким, какой я есть. Или, возможно, есть другой способ выделить совпадения префиксов? Я очень новичок в Lucene, и я уверен, что все эти части делают или если они все необходимы. Я только что скопировал их из различных примеров, которые я нашел в Интернете. Так что, если я делаю что-то еще не так, пожалуйста, дайте мне знать. Спасибо.