我正在使用 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 很陌生,我确定所有这些部分都做了什么,或者它们是否都是必要的。我刚刚从网上找到的各种示例中复制了它们。所以如果我做错了什么,请告诉我。谢谢。