2012-01-31 73 views
3

我想使用FrenchAnalyzer将Html文本编入索引,因此我需要在分析Html文件之前去除它。使用Lucene分析器链接Solr HTMLStripCharFilter

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

我发现SolR HTMLStripCharFilter类看起来很完美,但我无法将它与法语分析器链接起来。

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

我使用Lucene 3.5.0不Solr的

回答

3

在您的Analyzer子类中,尝试覆盖initReader。您可能需要为分析器的构造函数添加stripHtml布尔参数,然后在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; 
    } 
} 
0

什么尝试类似的东西:

<analyzer> 
    <charFilter class="solr.HTMLStripCharFilterFactory"/> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.ElisionFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.SnowballPorterFilterFactory" language="French"/> 
</analyzer> 

了解更多:

  1. HTMLStripCharFilterFactory
  2. SnowballPorterFilterFactory
  3. Solr LanguageAnalysis - French
+1

问题是我没有使用Solr! – guillaume06 2012-02-01 10:03:58