docker 安装 solr搜索引擎

关于solr

Solr是一个独立的企业级搜索应用服务器,solr是以lucene为内核开发的企业级搜索应用 应用程序可以通过http请求方式来提交索引,查询索引,提供了比lucene更丰富的查询语言,是一个高性能,高可用环境全文搜索引擎

但是要玩转solr还先需要先了解倒排索引和分词器

什么是倒排索引?

在进行索引之前首先要进行分词,对于分词就进行一个简单的介绍
分词指的是将一个汉字序列切分成一个个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂得多、困难得多。
常用的IK分词器,庖丁解牛分词器。。

下面介绍倒排索引:
文章表

文章id文章标题文章内容
1世界安全保护协会我们是一个保护世界的组织
2世界卫生清洁协会清理,清洁,干净,卫生

倒排索引:

索引文章id
世界1,2
安全1
保护1
协会1,2
卫生2
清洁2

意思为如果查询世界的话,会查出文章id1和2的文章内容
查询安全的话,只查出文章id为1的文章内容

俩者都是比较的粗浅的介绍了一下,不过了解一点点倒排和分词对solr也会有帮助。
如要更详细的了解的话如下:
这是关于倒排索引和分词器的一些介绍转载于博客园
https://www.cnblogs.com/zlslch/p/6440373.html

Solr支持使用json格式提交数据。

json格式:
   [] 代表数组
   {} 代表对象(文档 document)
   键值对  代表属性
 {
    id:1
    hobby:["篮球","上厕所"]
    tt:{    
  	 }            
  }

用数据库表结构来展示:

文章表

文章id文章标题文章内容
1一个团的兵力来干我在xxxx年xx月xx日某男子被一个团的兵给干了
2p某减肥成功发出猪叫声p某减肥成功这你也信,发出猪叫到是真的
模拟json
[
  {
     id:1,
     title:"一个团的兵力来干我",
     content:"在xxxx年xx月xx日某男子被一个团的兵给干了"
   },
  {
     id:2,
     title:" p某减肥成功发出猪叫声",
     content:"p某减肥成功这你也信,发出猪叫到是真的"
   }

]

核(core):是用于存储json格式的数据,等价于mysql中数据库的概念
文档:一个json对象就是一个文档 相同属性的json数组集合就是一个表

安装 solr

下载镜像

执行:docker pull solr:7.5.0

docker-solr安装.png

启动Solr容器

执行:docker run --name my-solr -d -p 8983:8983 -t solr:7.5.0

docker-solr启动.png

访问Solr管理后台

在浏览器中打开http://localhost:8983/solr/#/,即可进入solr管理界面

docker-admin.png

新建SolrCore

新建solrCore,名称为mycore,执行:docker exec -it --user=solr my-solr bin/solr create_core -c mycore

docker-solr-core-add.png
完成后,进入solr管理页面,在左侧的下拉框中选择core,这里选择刚才新建的mycore

docker-solr-core.png

Solr配置持久化

将容器中solr的配置拷贝到宿主机的共享volume中,实现配置持久化。由于我的共享volume是在F盘中,所以执行下面的命令:docker cp my-solr:/opt/solr/ f:/data/solr/

docker-solr-copy.pngdocker-solr-file.png

设置中文分词库smartcn

  1. 以root身份进入容器内部:docker exec -it --user root my-solr /bin/bash
  2. 定位Solr7自带的中文分词jar包所在位置:/opt/solr/contrib/analysis-extras/lucene-libs
  3. 进入刚才创建的solr core 的位置:/opt/solr/server/solr/mycore/conf,修改 solrconfig.xml 添加 _smartcn_ 包的 lib 标签
  4. 在managed-schema中添加中文分词的FieldType
  5. 将新增的配置同步到宿主的共享volume:docker cp my-solr:/opt/solr/server/solr/mycore/conf/solrconfig.xml f:/data/solr/solr/server/solr/mycore/conf/solrconfig.xml  

docker cp my-solr:/opt/solr/server/solr/mycore/conf/managed-schema f:/data/solr/solr/server/solr/mycore/conf/managed-schema

重启solr: docker restart my-solr

docker-solr-smartcn.png

docker-solr-conf.png

docker-solr-lib.png

docker-solr-cn-text.png

常见问题

进入Docker的Solr容器,执行很多命令都报权限不足:Permission denied

解决办法:docker exec -it --user root my-solr /bin/bash

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值