1 Solr copyField是什么?
1.1.应用场景
我们在搜索(检索)的时候,比如输入凯哥Java。一篇文章一般分为标题、简介、内容、作者、创建时间、修改时间、分类、标签等其他很多字段。在检索的时候,输入的关键字需要指定字段(在solr中称为域,这里就姑且称之为字段。望理解)进行检索(不可能从一个表中所有字段进行检索,因为有些字段不需要)。比如,输入关键字想从标题、简介、内容、作者这四个字段中检索。那么我们是不是在solr的schema.xml文件中重复这四个字段,然后在刷新solr的时候每次冗余(这里使用了数据库字段的说法,不对的。为了便于理解就用冗余望理解)这四个字段吗?
当然不是,solr为我们提供了一个copyField这个字段(域)。也就是复制域。
1.2.语法:
说明:
source:原来的域。也就是你想要复制的域
dest(destination):目标域。也就是要复制到那个字段。
1.3.用法举例:
Solr的schema.xml中:
定义了name字段
定义了一个text字段:
via copyField further on in this schema -->
将name字段内容复制到text字段中:
说明:将name这个字段(域)复制到text字段(域)中。
2 copy到使用了自定义的中文分词器中
2.1.先solr中引入中文分词器(这里就省略。以后会详细讲解)
2.2.在solr的schema.xml中添加自定义的分词类型
2.3.在copyField字段使用自定义目标和自定义中文分词器
2.3.1创建自定义目标字段使用自定义的中文分词器
2.3.2.在copyField字段中使用自定义目标字段
完整的:
配置完成重启solr服务。
使用代码测试:
检索高亮显示结果:
检索目标:
进行检索结果:
结果评测:
出现想要的结果且高亮。至此配置自定义目标域使用自定义分词器ok.
需要注意的:
在使用copyField时候,source和dest这两个都需要先申明才可以。
欢迎关注凯哥微信公众号:凯哥Java