搜索引擎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/
控制层
接口
实体类
分页接口蓝色指针
控制层
其他都一样参照上面