这一篇写一下springboot整合solr,代码已经上传到github,传送门。
<强> 1,新建核心并配置模式强>
solr创建- c“book_core”,配置分词器并且领域类型定义为分词器类型。
& lt; fieldType name=癷k_word”class=皊olr.TextField”比; & lt;分析仪类型=爸甘北? & lt;记号赋予器类=" org.wltea.analyzer.lucene。IKTokenizerFactory " useSmart=" false "相依=" ik.conf”/比; & lt;过滤器类=" solr.LowerCaseFilterFactory "/比; & lt;/analyzer> & lt;分析仪类型=安檠北? & lt;记号赋予器类=" org.wltea.analyzer.lucene。IKTokenizerFactory”useSmart=" true "相依=" ik.conf”/比; & lt;过滤器类=" solr.LowerCaseFilterFactory "/比; & lt;/analyzer> & lt;/fieldType> & lt; !——自定义添加了——比; & lt;字段名="描述" type=" ik_word "索引=" true "=" true "/存储在
配置完毕后启动solr。
<强> 2,相关配置强>
配置
& lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-data-solr & lt;/dependency>
配置application.properties相关solr的内容
# solr配置 spring.data.solr.host=http://localhost: 8983/solr/book_core
如果想同时使用好几个核心,通过HttpSolrClient solrClient=new HttpSolrClient (url);构造出对应的核心solrClient进行相关操作。
<强> 3,solr增删改查强>
3.1,新增实体
@SolrDocument (solrCoreName=癰ook_core”) 公开课书{ @ id @Field 私人字符串id; @Field 私人字符串描述; 公共字符串getId () { 返回id; } 公共空间setId (String id) { 这一点。id=id; } 公共字符串getDescription () { 返回描述; } 公共空间setDescription(字符串描述){ this.description=描述; } }
在这里要说明一下实体类上的注解@field和@SolrDocument是为了QueryResponse.getBeans()能转化成相关实体类,不然无法识别。
3.2增删改
@ autowired SolrClient SolrClient; @Override 公共空间添加(本书){ SolrInputDocument文档=new SolrInputDocument (); document.setField (“id”, book.getId ()); document.setField(“描述”,book.getDescription ()); 尝试{ solrClient.add(文档); solrClient.commit (); }捕捉(SolrServerException e) { e.printStackTrace (); }捕捉(IOException e) { e.printStackTrace (); } } @Override 公共空间删除(字符串查询){ 尝试{ solrClient.deleteByQuery(查询); solrClient.commit (); }捕捉(SolrServerException e) { e.printStackTrace (); }捕捉(IOException e) { e.printStackTrace (); } } @Override 公共图书更新(本书){ 尝试{ solrClient.addBean(书); solrClient.commit (); }捕捉(IOException e) { e.printStackTrace (); }捕捉(SolrServerException e) { e.printStackTrace (); } 返回的书; }
增加删除修改都差不多,增加和修改可以通过添加(SolrInputDocument)和addBean,根据主键是否存在来判断是新增还是修改,删除可以通过主键或者条件进行删除。增删改之后一定要记得承诺!
主键是在模式中配置的,默认有id字段做主键,也可以自定义主键,在模式中配置。
通过添加方法加了几个演示后,可以在solr管理页面的查询出查看添加的内容
3.3查询
查询则通过SolrQuery入参进行查询
@Override 公共ListqueryAll () { List 书目=new ArrayList (); SolrQuery SolrQuery=new SolrQuery (); solrQuery.setQuery (“*: *”); 尝试{ QueryResponse QueryResponse=solrClient.query (solrQuery); 如果(queryResponse !=null) { 书目=queryResponse.getBeans (Book.class); } }捕捉(SolrServerException e) { e.printStackTrace (); }捕捉(IOException e) { e.printStackTrace (); } 返回书目; springboot整合solr的方法详解