在英文中,单词本身就是一个“词”,一句话是由若干个英文单词和分隔符(空格)组成。而在汉语中,一句话是由若干汉字组成,但是语意的理解是以词为单位,而词和词之间没有分隔符,这样就给中文的语意理解造成了一定障碍。比如“南京市长江大桥”既可以理解为“南京市/长江/大桥”,也可以理解为“南京/市长/江大桥”。如果没有中文分词器,solr就只能按照整句话或者单个字进行索引,这样不但效率低,而且也会影响搜索结果的相关性。因此,我们需要为solr配置中文分词器。
在前面配置schema文件时,我们为product_name和product_brand两个域设置了text_cn_index的文本域类型,采用的是solr.KeywordTokenizerFactory这个分词器,它会将整个文本作为一个Token。solr管理页面提供了分词测试功能,在后续配置分词器的过程中都可以使用这个接口进行测试:在solr管理页面选择core后点击“Analysis”,键入测试文本后选择FieldType为配置了分词器的product_name或product_brand,点击“Analyse Values”后可以看到结果。
(分词器修改成功后,通过Analyse Values可以看到修改后的分词效果,但是要重新上传搜索引擎数据才能更新索引!)
1 SmartCN分词器
SmartCN是solr内置的中文分词器,是基于北理工张华平博士团队开发的NLPIR平台的简化版。SmartCN不在solr的源码