理解solr中的 Analyzer,Tokenizer,Filter
?
?任何复杂的field的分析都可以被分成独立的,一系列的处理步骤,你会发现solr中包含了大部分你需要用到的analyzer。在这个例子中,虽然没有制定特定的analyzer的类,但是他们的按照配置的流程依次走过,从?WhitespaceTokenizerFactory 开始,最后PorterStemFilterFactory 结束。通过配置analyzer的type可以指定是在 index阶段还是 query阶段使用。
?
Tokenizer:
tokenizer是把一个文本流切成一个个token的,就是传说中的分词,把一句话分成一段一段的,一些空格,停顿符啥的可能被扔了,一个token包含一些这个词的元信息在里面,比如说这个词的位置,当然分词的结果很可能是偏离原来意思的。如果就为了分词的话,一个analyzer中只有一个tokenizer,否则,这个输出会作为以下输入来使用,
?
Filter:
filter比tokenizer简单,是专门处理一个个token的, 把他们做变换或者是丢弃什么的。filter是接受一个token流,输出一个token流,所以可以是一个链条,处理的顺序跟schema里面的顺序是一样的,所以我们一般把通用的filter放到前面,其他放后面。
?
?调试自己的anaylizer使用http://localhost:8983/solr/#/collection1/analysis ?就可以了 ,十分方便。
?