- IKAnalyzer是一个开源的,基于Java语言开发的轻量级中文分词工具包
- 基于文本匹配,不需要投入大量的人力进行训练和标注
- 可以自定词典,方便加入特定领域的词语,能分出多粒度的结果
- 创建/usr/local/Docker/solr/ikanalyzer目录
/usr/local/docker/solr/ikanalyzer 用于存放Dockerfile镜像配置文件
- docker-compose.yml
services:
solr:
build: ikanalyzer
restart: always
container_name: solr
ports:
- 8983:8983
volumes:
- ./solrdata:/opt/solrdata
- Dockerfile(在/usr/local/docker/solr/ikanalyzer中需要有文件:ik-analyzer-solr5-5.x.jar,solr-analyzer-ik-5.1.0.jar,ext.dic,stopword.dic,IKAnalyzer.cfg.xml,managed-schema)
# 创建Core
WORKDIR /opt/solr/server/solr
RUN mkdir ik_core
WORKDIR /opt/solr/server/solr/ik_core
RUN echo 'name=ik_core' > core.properties
RUN mkdir data
RUN cp -r ../configsets/sample_techproducts_configs/conf/ .
# 安装中文分词
WORKDIR /opt/solr/server/solr-webApp/webapp/WEB-INF/lib
ADD ik-analyzer-solr5-5.x.jar .
ADD solr-analyzer-ik-5.1.0.jar .
WORKDIR /opt/solr/server/solr-webapp/webapp/WEB-INF
ADD ext.dic .
ADD stopword.dic .
ADD IKAnalyzer.cfg.xml .
# 增加分词配置
COPY managed-schema /opt/solr/server/solr/ik_core/conf
WORKDIR /opt/solr
- 构建镜像: 在/usr/local/docker/solr中执行命令
Solr分析功能修改managed-schema配置业务系统字段
- Solr中自带的相同字段无需再添加,其它字段需要手动添加Solr字段(通过编辑managed-schema配置文件来手动添加Solr字段)
<field name="tb_item_cid" type="plong" indexed="true" stored="true" />
<field name="tb_item_cname" type="text_ik" indexed="true" stored="true" />
<field name="tb_item_title" type="text_ik" indexed="true" stored="true" />
<field name="tb_item_sell_point" type="text_ik" indexed="true" stored="true" />
<field name="tb_item_desc" type="text_ik" indexed="true" stored="true" />
<!-- 复制域:Solr的搜索优化功能,,将多个字段复制到一个域,提高查询效率 -->
<field name="tb_item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true" />
<copyField source="tb_item_cname" dest="tb_item_keywords">
<copyField source="tb_item_title" dest="tb_item_keywords">
<copyField source="tb_item_sell_point" dest="tb_item_keywords">
<copyField source="tb_item_desc" dest="tb_item_keywords">
复制配置到容器docker cp managed-schema solr:/opt/solr/server/solr/ik_core/conf
重启容器docker-compose restart
- 在Solr的Web界面可以进行CRUD操作
- 创建myshop-service-search-api项目,该项目只负责定义定义接口
- pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.funtl</groupId>
<artifactId>myshop-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../myshop-dependencies/pom.xml</relativePath>
</parent>
<artifactId>myshop-service-search-api</artifacteId>
<packaging>jar<packaging>
</project>
- 在项目中创建SearchService接口
public interface SearchService {
List<TbItemResult> search(String query,int page,int rows);
}
- 创建TbItemResult用于返回Solr结果集
推荐阅读
- 理解HTTPS及配置Django+HTTPS开发环境
- 自制蜜桔干,如何自制桂花茶
- 软件测试开发实战|接口自动化测试框架开发
- 浅谈在Linux中如何将脚本做成系统服务开机自启动
- 我们将如何在火星上生活 火星在地球
- 如何在主流浏览器上正常使用只兼容IE的“上古网站”?
- 八种实用的免费游戏开发软件工具
- 如何用谷歌关键词规划师挖掘有效关键词?
- 云呼叫中心的核心功能有哪些?企业如何应用?
- 如何快速去水印批量搬运短视频,教你玩转自媒体短视频