关于solr
Solr是一个独立的企业级搜索应用服务器,solr是以lucene为内核开发的企业级搜索应用 应用程序可以通过http请求方式来提交索引,查询索引,提供了比lucene更丰富的查询语言,是一个高性能,高可用环境全文搜索引擎
在进行索引之前首先要进行分词,对于分词就进行一个简单的介绍
分词指的是将一个汉字序列切分成一个个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂得多、困难得多。
常用的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
json格式:
[] 代表数组
{} 代表对象(文档 document)
键值对 代表属性
{
id:1
hobby:["篮球","上厕所"]
tt:{
}
}
用数据库表结构来展示:
文章表
文章id | 文章标题 | 文章内容 |
---|---|---|
1 | 一个团的兵力来干我 | 在xxxx年xx月xx日某男子被一个团的兵给干了 |
2 | p某减肥成功发出猪叫声 | 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
启动Solr容器
执行:docker run --name my-solr -d -p 8983:8983 -t solr:7.5.0
访问Solr管理后台
在浏览器中打开http://localhost:8983/solr/#/,即可进入solr管理界面
新建SolrCore
新建solrCore,名称为mycore,执行:docker exec -it --user=solr my-solr bin/solr create_core -c mycore
完成后,进入solr管理页面,在左侧的下拉框中选择core,这里选择刚才新建的mycore
Solr配置持久化
将容器中solr的配置拷贝到宿主机的共享volume中,实现配置持久化。由于我的共享volume是在F盘中,所以执行下面的命令:docker cp my-solr:/opt/solr/ f:/data/solr/
设置中文分词库smartcn
- 以root身份进入容器内部:
docker exec -it --user root my-solr /bin/bash
- 定位Solr7自带的中文分词jar包所在位置:
/opt/solr/contrib/analysis-extras/lucene-libs
- 进入刚才创建的solr core 的位置:
/opt/solr/server/solr/mycore/conf,
修改solrconfig.xml
添加 _smartcn_ 包的lib
标签 - 在managed-schema中添加中文分词的FieldType
- 将新增的配置同步到宿主的共享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容器,执行很多命令都报权限不足:Permission denied
解决办法:docker exec -it --user root my-solr /bin/bash