距离上次更新Solr教程很久,五一假期在家没什么事,记录一下之前一段时间公司的一些业务逻辑,以及如何应用.
当我们配置完基础的Solr配置之后就需要实现我们的代码逻辑,以及Solr更进一步的配置,所以首先分析一下具体业务,笔者之前的公司业务逻辑是想要对于公司内部类知网知识库的一个搜索功能,有如下的一个实体类.
1.为实体添加相应注解
/**
* 论文主键id
*/
@Field("id")
private Integer paperId;
/**
* 论文标题
*/
@Field("paper_title")
private String paperTitle;
/**
* 论文作者
*/
@Field("paper_author")
private String paperAuthor;
/**
* 论文来源
*/
@Field("paper_source")
private String paperSource;
/**
* 论文分类一级目录id
*/
@Field("paper_catalogOne")
private String paperCatalogOne;
/**
* 论文分类二级目录id
*/
private String paperCatalogTwo;
/**
* 论文分类三级目录id
*/
private String paperCatalogThree;
/**
* 论文上传者
*/
@Field("paper_uploader")
private String paperUploader;
/**
* 论文上传时间
*/
@Field("paper_upload_Time")
private Date paperUploadTime;
/**
* 论文地址
*/
@Field("paper_url")
private String paperUrl;
/**
* 论文下载数
*/
@Field("download_number")
private Integer paperDownloadNumber;
/**
* 论文点击量
*/
@Field("click_number")
private Integer paperClickNumber;
/**
* 论文收藏数
*/
@Field("collect_number")
private Integer paperCollectNumber;
/**
* 上传论文文件的md5值
*/
private String paperMd5;
/**
* 论文状态(0为未删除,1为已删除)
*/
private Integer paperState;
其中我们需要对标题,作者,来源等多个字段进行查询,所以需要将其索引到solr库之中,在其实体类需要的字段上需要加上@Field()注解.该注解会讲声明字段当成为solr字段存入solr的索引库之中.
添加完相应的注解之后,我们需要对为solr配置域
2.solr域的配置
域的简介:域相当于数据库的表字段,用户存放数据,因此用户根据业务需要去定义相关的 Field
(域),一般来说,每一种对应着一种数据,用户对同一种数据进行相同的操作。在solr之中,有三种类型的域,分别为简单域,复制域,动态域.
域的常用属性:
· name:指定域的名称
· type:指定域的类型
· indexed:是否索引
· stored:是否存储
· required:是否必须
· multiValued:是否多值
添加solr搜索域配置:将配置添加到~/solrHome/collection1/conf/schema.xml中
<field name="paper_title" type="text_ik" indexed="true" stored="true"/>
<field name="paper_uploader" type="text_ik" indexed="true" stored="true"/>
<field name="paper_upload_Time" type="date" indexed="true" stored="true"/>
<field name="paper_author" type="text_ik" indexed="true" stored="true"/>
<field name="paper_source" type="text_ik" indexed="true" stored="true"/>
<field name="paper_catalogOne" type="text_ik" indexed="true" stored="true"/>
<field name="paper_url" type="text_ik" indexed="false" stored="true"/>
<field name="download_number" type="int" indexed="true" stored="true"/>
<field name="click_number" type="int" indexed="true" stored="true"/>
<field name="collect_number" type="int" indexed="true" stored="true"/>
我们可以把它看做成我们需要搜索的数据在solr库中的一个实体类