SpringBoot整合Solr[超详细版]

目录

简介

什么是solr

该文档需要所有相关的文件

一、Linux启动开启并配置solr服务器

 Solr安装

 配置中文分析器 IK Analyzer

IK Analyzer简介

  IK Analyzer配置

二、solr域的使用

复制域

三、SpringBoot整合Solr

 1、配置xml依赖

2、配置yaml

3、配置模版

4、创建实体类

5、测试


简介

什么是solr

 Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。 Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能。Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

总之,Solr是一个可扩展的,可部署,搜索/存储引擎,优化搜索大量以文本为中心的数据。

该文档需要所有相关的文件

链接:https://pan.baidu.com/s/1qlmHdVzeBymYhXPuU0upnA?pwd=5432 
提取码:5432

一、Linux启动开启并配置solr服务器

首先,将solr.war包放入linux中

 Solr安装

1:安装 Tomcat,解压缩即可。

2:解压 下载好的solr-4.10.3.zip

3:把 solr-4.10.3下的dist目录solr-4.10.3.war部署到Linux中的 Tomcat\webapps下(去掉版本号)。

  •         通过 cp solr-4.10.3.war  solr   复制粘贴方式 去除版本号 
  •         通过 mv solr-4.10.3.war  solr  剪切粘贴方式 去除版本号

4:启动 Tomcat解压缩 war 包

5:把solr-4.10.3solr下example/lib/ext 目录下的所有的 jar 包,添加到 solr 的工程中(\WEB-INF\lib目录下)。

6:将solr-4.10.3solr下的/example/solr 目录放到linux的/usr/local/中并改名字为solrhome 

  • 先将solr-4.10.3solr下的/example/solr 目录放到linux中
  • 通过 mv solr  solrhome     来改名字

7、找到tomcat中的webapp/solr/WEB-INF/web.xml 文件

 8、修改web.xml文件

9:重启 Tomcat

http://自己的ip:端口号/solr/

 配置中文分析器 IK Analyzer

IK Analyzer简介

        IK Analyzer 是一个开源的,基亍 java 语言开发的轻量级的中文分词工具包。从 2006年 12 月推出 1.0 版开始, IKAnalyzer 已经推出了 4 个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。从 3.0 版本开始,IK 发展为面向 Java 的公用分词组件,独立亍 Lucene 项目,同时提供了对 Lucene 的默认优化实现。在 2012 版本中,IK 实现了简单的分词歧义排除算法,标志着 IK 分词器从单纯的词典分词向模拟语义分词衍化。

  IK Analyzer配置

1、在相关文件中解压IK Analyzer 2012FF_hf1.zip

2、把IKAnalyzer2012FF_u1.jar 添加到 /tomcat/webapp/solr/ 工程的 lib 目录下

3、在WEB-INF下创建classes

 

4、 把解压后的IK Analyzer 2012FF_hf1中的stopword.dicIKAnalyzer.cfg.xml放到 solr 工程的 WEB-INF/classes 目录下。

 5、修改 solrhome/collection1/conf 的 schema.xml 文件,配置一个 FieldType,使用 IKAnalyzer

<fieldType name="text_ik" class="solr.TextField">
     <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

 6、重启tomcat

二、solr域的使用

相当于数据库的表字段,用户存放数据,因此用户根据业务需要去定义相关的Field(域),一般来说,每一种对应着一种数据,用户对同一种数据进行相同的操作。

域的常用属性:

  • name:指定域的名称
  • type:指定域的类型
  • indexed:是否索引
  • stored:是否存储
  • required:是否必须
  • multiValued:是否多值

总的来说:当我们想要查询数据时,自己设置域来找到对应的值信息

如果你想要通过名称查询数据时需要在自己的schema.xml 文件中配置域的name等信息来设置业务系统 Field

如下: 

我在schema.xml中配置了两个域 名称分别为item_goodsid 和 item_title,而type因为item_title涉及到中文,所以使用刚才配置的中文解析器类型

复制域

复制域的作用在于将某一个Field中的数据复制到另一个域中

如下:

我配置了一个复制域,并且复制了一个item_title,当然可以配置很多个,这样我可以只通过查询item_keywords来查询复制域中所有的信息 

好啦,上述配置大概就这些,接下来我们进入SpringBoot整合SolrDemo环节

三、SpringBoot整合Solr

springboot版本为:2.3.4.RELEASE

 1、配置xml依赖

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-solr</artifactId>

    </dependency>

2、配置yaml

spring:
  data:
    solr:
      host: http://自己的ip:自己的端口号/solr

3、配置模版

import org.apache.solr.client.solrj.SolrClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.solr.core.SolrTemplate;

@Configuration
public class SolrConfig {

    @Bean
    public SolrTemplate  solrTemplate(SolrClient solrClient){

        return new SolrTemplate(solrClient);
    }

}

4、创建实体类

public class TbItem implements Serializable{

	@Field
    private Long id;

	@Field("item_title")
    private String title;
//get set省略


}

5、测试


@SpringBootTest
public class SolrUtilTest {

    @Autowired
    SolrTemplate solrTemplate;

    @Autowired
    ItemMapper itemMapper;
    @Test
    public void testAdd(){
        TbItem item=new TbItem();
		item.setId(1L);
		item.setTitle("华为Mate9");
       
        solrTemplate.saveBeans("collection1",item);
        solrTemplate.commit("collection1");
    }

    //条件查询
 @Test
	public void testPageQueryMutil(){	
		Query query=new SimpleQuery("*:*");
		Criteria criteria=new Criteria("item_title");		
		query.addCriteria(criteria);
		
	 ScoredPage<Item> items = solrTemplate.queryForPage("collection1", query, Item.class);
                System.out.print(items);
	}
}

 好了,上述就是demao环节结束了,快去使用吧!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值