搜索引擎入门

本文详细介绍了如何在Linux环境下部署Solr搜索引擎,并实现其与SpringBoot项目的集成,包括核心(core)创建、数据迁移、IK分词器配置及SpringBoot代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搜索引擎SOLR

solr高可用版本:
https://blog.youkuaiyun.com/liaomin416100569/article/details/77301756
solr 安装===============在linux系统上
核(core):是用于存储json格式的数据,等价于mysql中数据库的概念
文档:一个json对象就是一个文档 相同属性的json数组集合就是一个表
拉取镜像:docker pull solr:5.5.5
安装solr:

docker run --name my_solr -id --net host -t solr:5.5.5

检测端口 netstat -aon | grep 8983 (8983端口号)
telnet 查看端口是否通了(连接)
创建core(核心)

docker exec -it --user=solr my_solr bin/solr create_core -c mycore  

- -user=solr (账号用户)
my_solr (在那个容器执行命令)
-c为核名字

Copying configuration to new core instance directory:
/opt/solr/server/solr/mycore       //json插入在那个目录下

Creating new core 'mycore' using command:
http://localhost:8983/solr/admin/cores?action=CREATE&name=mycore&instanceDir=mycore

{//核的状态
  "responseHeader":{
    "status":0,//0表示成功
    "QTime":2694},//创建用了多少时间毫秒
  "core":"mycore"}

出现这一段表示成功后
http://192.168.230.133:8983 进入
在这里在这里插入图片描述插入图片描述
点Documents
假设提交(默认):例:
{“id”:“change.me”,“title”:“change.me”} json 对象格式
solr搜索
点query
在这里插入图片描述
q表示按照什么字段来搜索
字段名:值 (where 列名=值)
支持OR和AND语法 (必须大写)
比如 i:1 AND j:2
比如 i[1 to 10]
引jar包到:linux系统 ika分词器
在这里插入图片描述
进入容器:docker exec -it my_solr bash
ls 查看目录
find . -name lib (在当前目录查找 lib目录 .为当前 find 查找)
找到这个 ./server/solr-webapp/webapp/WEB-INF/lib
退出到 ika目录下将上面的jar 包考到 server/solr-webapp/webapp/WEB-INF/lib下

<font color="red">docker cp ./ikanalyzer-2012_u6.jar my_solr:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib</font>

docker stop my_solr 关闭重新启动一下
docker start my_solr
docker exec -it my_solr bash(进入容器也就是核)
cd /opt/solr/server/solr/mycore(进入这个目录)
看图操作
在这里插入图片描述
more managed-schema 建议 使用 notepad++ 找到目录查看太长了 (安装插件)
插件:找到notepad++目录下的plugins目录进入将这个在这里插入图片描述考到plugins目录下九OK
拷贝到当前目录ika(修改后考回来)看下面操作

docker cp my_solr:/opt/solr/server/solr/mycore/conf/managed-schema ./

重要
添加一个字段数据类型 使用ik分词器

<fieldType name="text_ik" class="solr.TextField">
  		<analyzertype="index"isMaxWordLength="false"class="org.wltea.analyzer.lucene.IKAyzer"/>   
  		<analyzertype="query"isMaxWordLength="true"class="org.wltea.analyzer.lucene.IKAnlyzer"/> 
 </fieldType>

在这里插入图片描述
紫色指针指的是动态字段 *_ik是自己添加的 意思就是_ik结尾的字段都可以匹配 中文分词器
indexed:为是否反向索引
stored:是否存储
id字段改为false不需要分词 id不能相同 会覆盖
完成之后
docker stop my_solr 关闭容器(核)
在拷贝回去点击跳到对应位置

docker cp ./managed-schema my_solr:/opt/solr/server/solr/mycore/conf/

docker start my_solr 开启容器(核)
在这里插入图片描述
表示配置成功
重要
数据库数据迁移
docker exec -it my_solr bash(进入容器)
拷贝支持导入的jar
mysql驱动包5.1.24自己倒一下在拷贝

cp /opt/solr/dist/solr-dataimporthandler-5.5.5.jar /opt/solr/server/solr-webapp/webapp/WEB-INF/lib
cp /opt/solr/dist/solr-dataimporthandler-extras-5.5.5.jar /opt/solr/server/solr-webapp/webapp/WEB-INF/lib
docker cp ./mysql-connector-java-5.1.24.jar  my_solr:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib

在这里插入图片描述
紫色指针创建一个data-c.xml文件
灰色指针对应表
绿色ip地址对应好&数据库账户密码对应好
红色指的是主键数据库id
蓝色是数据库对应的列 要对应好

 <?xml version="1.0" encoding="UTF-8"?>  
<dataConfig>  
    <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.1.3:3306/test" user="root" password="123456" batchSize="-1" />  
<document>  
          <entity name="book" pk="newid"  dataSource="source1"   
                query="select * from  mynew" >
            <field column="newid" name=""/>  
            <field column="newtitle" name="title_ik"/>  
        </entity>
</document>  
</dataConfig>  

完成后就输下面的命令拷贝到opt/solr/server/solr/mycore/conf

docker cp ./data-c.xml  my_solr:/opt/solr/server/solr/mycore/conf

修改solrconfig.xml 指定data-c.xml文件(就是关联映射路径)

docker cp my_solr:/opt/solr/server/solr/mycore/conf/solrconfig.xml .

在这里插入图片描述
红色指针对应好
在拷贝回去

docker cp ./solrconfig.xml my_solr:/opt/solr/server/solr/mycore/conf

docker restart my_solr (重启my_solr容器)
在这里插入图片描述
在这里插入图片描述
红色指针指的地方是数据库表名页面就完成了
上图中clean要会清除数据不要勾不然保存的数据都会清除
在这里插入图片描述
红色指针为查询
黄色为排序 id asc升序 desc降序 id排序
灰色为分页 第一个数字为下标 第二个为行

springboot集成solr
创建一个maven项目
创建控制层代码如下
在这里插入图片描述

@RestController
public class SolrCon {
	
	@Autowired
	private SolrTemplate solrTemplate;
	
	@GetMapping("/queryList")
	public List<Empp> query(String keyword){
	// 指你分词查询的字段
		SimpleQuery sq = new SimpleQuery("ename_ik:"+keyword);
		Page<Empp> query = solrTemplate.query(sq, Empp.class);
		return query.getContent();
	}
}

创建一个实体类
在这里插入图片描述
@SolrDocument(solrCoreName=“mycore”)//扫描这个核
创建一个main方法
在这里插入图片描述

@SpringBootApplication
public class SolrMain {
	//装配一个这个类连接solr
	@Bean
	public SolrTemplate solrTemplate(SolrClient client) {
		return new SolrTemplate(client);
	}
	public static void main(String[] args) {
		SpringApplication.run(SolrMain.class, args);	
	}
}

创建一个static文件夹再创建一个html文件,引jquery

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
	function query(){
		$.ajax({
			url:'queryList',
			dataType:'json',
			data:'keyword='+$("#myKey").val(),
			type:'get',
			success:function(data){
				$("#vessel").text(JSON.stringify(data));
			}
		})
	}
</script>
</head>
<body>
	新闻:<input id="myKey" type="text" name="keyword"/><button onclick="query()">提交</button>
	<div  id="vessel"></div>
</body>
</html>

创建application.yml资源文件

spring: 
  data: 
    solr: 
      host: http://192.168.230.134:8983/solr
server: 
  port: 8888  

引依赖
在这里插入图片描述

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
        <relativePath />
	</parent>


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

看截图路径创建文件或类

solr JPA
学习文档:
https://docs.spring.io/spring-data/jpa/docs/1.11.17.RELEASE/reference/html/

控制层
在这里插入图片描述
接口
在这里插入图片描述
实体类
在这里插入图片描述
分页接口蓝色指针
在这里插入图片描述
控制层
在这里插入图片描述
其他都一样参照上面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值