分词器

文本字段的分词器配置在 schema.xml 中的 <analyzer> 元素下的:

<br />
&lt;fieldType name=&quot;text&quot; class=&quot;solr.TextField&quot;&gt;<br />
	&lt;analyzer type=&quot;index&quot;&gt;<br />
		&lt;tokenizer class=&quot;solr.StandardTokenizerFactory&quot; /&gt;<br />
		&lt;filter class=&quot;solr.StandardFilterFactory&quot; /&gt;<br />
	&lt;/analyzer&gt;<br />
&lt;/fieldType&gt;<br />

这个class属性指明一个工厂类,这个工厂类在需要的时候可以产生一个分词器的实例。分词器工厂类实现了 org.apache.solr.analysis.TokenizerFactory ,TokenizerFactory 的 create 方法接受一个 reader 然后返回一个 TokenStream。当 solr 创建了分词器,通过一个 reader 传递文本的字段内容给分词器。

可以通过设置 <tokenizer> 元素的属性给分词器传递参数。
<br />
&lt;fieldType name=&quot;semicolonDelimited&quot; class=&quot;solr.TextField&quot;&gt;<br />
	&lt;analyzer type=&quot;query&quot;&gt;<br />
		&lt;tokenizer class=&quot;solr.PatternTokenizerFactory&quot; pattern=&quot;; &quot; /&gt;<br />
		&lt;analyzer&gt;<br />
&lt;/fieldType&gt;<br />

什么是分词器

分词器的工作是将一串的文本切成 tokens,这些 token 一般是文本的子集。分析器的处理对象时一个字段,分词器则是面对一串文本,分词器读取一串文本,然后将其切割成一堆的 token 对象。
字符串中的空格或连接符会被删除。字符将被添加或者替换,如映射别名,或者缩写替换缩写为正常格式。分词器可能会产生出与原字段值不一致的token,或者长度与原始文本不一致。这个在token元数据用于文本字段高亮搜索结果时需要注意。
<br />
&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;/analyzer&gt;<br />
&lt;/fieldType&gt;<br />

<tokenizer>元素的类名称不是一个真实的分词器,但是它指向一个实现了org.apache.solr.analysis.TokenizerFactory接口的类。这个工厂在需要的时候会创建一个分词器的实例。工厂创建出来的对象必须继承 org.apache.lucene.analysis.TokenStream.
(这篇翻译的比较烂,对分词这块了解不够深刻,有空再回来修订)

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress