我正在使用Lucene的荧光笔突出显示部分字符串。下面的代码似乎很适合查找词干的词,但不适用于前缀匹配。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,可以创建一个IndexReader。或者也许有不同的方式让它突出显示前缀匹配?我对Lucene非常陌生,我敢肯定,所有这些作品都是如此,或者它们都是必需的。我刚刚从网上找到的各种示例中复制了它们。所以如果我还有其他问题,请告诉我。谢谢。
是的,我没有索引。这就是我在整个应用中获得的所有Lucene代码。因此,一旦我在pText中找到该单词的所有位置位置,我将调用哪个更新我的Query对象的信息? – Zip184
您不需要位置/位置,只需查找单词,添加到列表/数组,然后创建一个查询字符串,如'field:abc1 field:abc2 field:abc3'并将其提供给查询解析器。 –
这个技巧。谢谢! – Zip184