参考文档
- 官方文档:solr.apache.org/guide/solr/…
- Docker 镜像下载与安装参考:juejin.cn/post/755914…
Solr 9+ 特征
- 默认托管方式运行,一般情况不需要手动编辑
managed-schema.xml - 通过 API 配置 Core 不需要重启 Solr
- 取消了 DIH ,数据导入需要单独的插件或程序控制
Solr 中的默认字段
id字段:默认的唯一主键,添加数据时自动生成的 uuid_nest_path_字段:用于处理嵌套文档(Nested Documents)时记录文档的层级路径_root_字段:标识文档的根节点位置,用于分布式索引和分片管理_text_字段:作为动态字段的默认搜索字段,包含所有text_*类型字段的聚合内容_version_字段:实现乐观并发控制的版本号字段
添加 IK 分词器
- github.com/dev-byvoid/…
- 源代码中需要有
IKTokenizerFactory.java用于创建Tokenizer - 使用 Maven 打包 Java 代码,并将 jar 文件复制到 lib 文件夹
# 打包 jar 文件 cd ik-analyzer mvn clean package # 复制到 lib 文件夹 cd target docker cp ik-analyzer-9.0.0.jar /opt/solr/lib docker cp ik-analyzer-9.0.0-sources.jar /opt/solr/lib # /opt/solr/lib 对所有 solr core 都有效 # ../core_name/lib 仅对当前 core 有效 # https://solr.apache.org/guide/solr/latest/configuration-guide/libs.html - 配置 fieldType
# indexAnalyzer 表示索引时的 Tokenizer # queryAnalyzer 表示查询时的 Tokenizer # useSmart=true 时拆词不会出现重新,粒度更粗,索引效率更高 curl -X POST -H 'Content-type:application/json' --data-binary '{ "add-field-type":{ "name":"text_zh_id", "class":"solr.TextField", "indexAnalyzer":{ "tokenizer":{ "class":"org.wltea.analyzer.lucene.IKTokenizerFactory", "useSmart":"true" }}, "queryAnalyzer":{ "tokenizer":{ "class":"org.wltea.analyzer.lucene.IKTokenizerFactory", "useSmart":"false" }}} }' http://localhost:8983/solr/techproducts/schema - 配置 IK 词典和停用词
-
创建文件夹
/opt/solr/classes -
IKAnalyzer.cfg.xml:主配置文件 -
ext.dic:自定义新词 -
stopword.dic:需要过滤的无意义词
-