我想用FrenchAnalyzer为HTML文本编制索引,因此我需要在分析之前剥离HTML。

我想在搜索后突出显示关键字,因此solution like this one不起作用,因为我想保留字符位置信息。

我找到了看上去很完美的SolR HTMLStripCharFilter类,但无法将它与FrenchAnalyzer链接起来。

我试图重写FrenchAnalyzer,但是我不知道如何使用HtmlStripCharFilter,它不能用作标准的Lucene过滤器。

我在没有Solr的情况下使用Lucene 3.5.0

最佳答案

在您的Analyzer子类中,尝试覆盖initReader。您可能想将stripHtml布尔参数添加到Analyzer的构造函数中,然后在initReader中使用此条件。

/**
 * Override this if you want to add a CharFilter chain.
 */
@Override
protected Reader initReader(Reader reader) {
    if (stripHtml) {
        return new HTMLStripCharFilter(CharReader.get(reader));
    } else {
        return reader;
    }
}

07-28 13:15