什么是Filter--过滤器
像分词器(tokenizer)一样,过滤器(filter)消耗输入,产生token流.过滤器同样从org.apache.lucene.analysis.TokenStream中产生.和tokenizer不同的是,filter的输入是一个Tokenizer.filter的工作一般都比tokenizer简单,因为在大多数情况下,filters查看每一个stream中token的顺序,并决定是否传递,替换,或者废弃它.
filter还可以提前做出更复杂的分析,一次考虑多个token.虽然这是不常见的.一个假设的对于这种filter的使用就是规范化名字的状态,需要分成2个单词. 例如,这单独的token "california" 可以使用"CA"来替换,然而token "rhode" 以及接着的"island" 可能会变成"RI".
因为filters消耗了一个TokenStream,生成了一个TokenStream.
<fieldType name="text" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.StandardFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" />
</analyzer>
</fieldType>
例子中,solr的标准分词器将字段的文本内容分解成tokens.这些tokens然后传递给solr的过滤器,这些顾虑起删除首字母的缩略词,执行一些普通的操作,所有的token都设置为小写,因为查询时不区分大小写的.