Lucene の Highlighter を使用して、文字列の一部を強調表示しています。以下のコードは、単語の語幹を見つけるには問題なく機能するようですが、プレフィックス マッチングには機能しません。
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 に非常に慣れていないので、これらのすべての部分が何をするのか、またはそれらがすべて必要なのかを確信しています。オンラインで見つけたさまざまな例からそれらをコピーしました。だから私が他に何か間違ったことをしているなら、私に知らせてください。ありがとう。