Warning: Use of undefined constant ‘the_content’ - assumed '‘the_content’' (this will throw an Error in a future version of PHP) in /www/wwwroot/solrcn.com/wp-content/themes/green-hope/header.php on line 29

什么是过滤器

和切词器一样,过滤器也是消费输入,然后输出一串的 tokens,过滤器也是继承自 org.apache.lucene.analysis.TokenStream。和切词器不一样的是,一个过滤器的输入是另一种TokenStream。通常情况下,过滤器的工作比切词器简单,过滤器拿着每个token,决定是继续流转下去或者替换或者抛弃。
过滤器消费一个 TokenStream 然后产生一个新的 TokenStream,过滤器可以一个接一个组成一个链。链上的每个过滤器按顺序执行,因此注明过滤器的顺序显得很重要。通常情况下,先执行普通过滤器,然后执行专业过滤器。
&lt;fieldType name=&quot;text&quot; class=&quot;solr.TextField&quot;&gt;<br />
&lt;analyzer&gt;<br />
&lt;tokenizer class=&quot;solr.StandardTokenizerFactory&quot;/&gt;<br />
&lt;filter class=&quot;solr.StandardFilterFactory&quot;/&gt;<br />
&lt;filter class=&quot;solr.LowerCaseFilterFactory&quot;/&gt;<br />
&lt;filter class=&quot;solr.EnglishPorterFilterFactory&quot;/&gt;<br />
&lt;/analyzer&gt;<br />
&lt;/fieldType&gt;

这个例子以solr标准分词器为开始,这个分词器会将字段的文本拆分成tokens,这些tokens再通过solr标准过滤器,标准过滤器移除字母中的点号,并且执行一些其他通用的操作。然后所有的token被转成小写,这样查询时可以匹配大小写不敏感搜索。
上面例子中最后一个过滤器是一个 stemmer 过滤器,它使用了Porter算法。

添加一条评论 »本文共 1 条评论

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress   闽ICP备18020075号-1