Solr配置:solr.xml配置详解solr.xml文件定义了一些适用于所有或多个核心的全局配置选项。
本节将描述Solr附带的默认solr.xml文件以及如何根据需要修改它。有关如何配置core.properties的详细信息,请参见核心发现部分。
定义solr.xml您可以在$SOLR_HOME目录(通常是server/solr或/var/solr/data)中找到solr.xml,或者在使用SolrCloud时可选地在ZooKeeper中找到。如果找不到$SOLR_HOME/solr.xml,Solr将使用默认的solr.xml文件。
警告: 从ZooKeeper加载solr.xml已弃用,在未来版本中将不受支持。作为Solr的节点配置,此文件必须在早期启动时可用,并且也允许节点之间不同。
默认的solr.xml文件位于$SOLR_TIP/server/solr/solr.x...
Solr配置:Configsets API完整指南
Solr配置:Configsets API完整指南Configsets API使您能够在Solr运行SolrCloud模式时向ZooKeeper上传新的配置集、创建和删除配置集。
配置集是配置文件的集合,如solrconfig.xml、synonyms.txt、模式、特定语言的文件和其他集合级配置文件(通常位于conf目录中的所有内容)。Solr附带两个示例配置集(_default和sample_techproducts_configs),可在创建集合时使用。使用相同概念,您可以创建自己的配置集,并在创建集合时使其可用。
此API提供了一种将配置文件上传到ZooKeeper并在两个或多个集合之间共享相同配置文件集的方法。
一旦配置集已上传到ZooKeeper,在使用Collections API创建集合时使用配置集名称,集合将使用您的配置文件。
如果通过此API上传,配置集不必在集合...
Solr配置:Config API详解
Solr配置:Config API详解Config API使您能够使用类似REST的API调用操作solrconfig.xml的各个方面。
此功能默认启用,在SolrCloud、用户管理集群和单节点安装中的工作方式类似。许多常编辑的属性(如缓存大小和提交设置)和请求处理器定义都可以通过此API更改。
使用此API时,solrconfig.xml不会被更改。相反,所有编辑的配置都存储在名为configoverlay.json的文件中。configoverlay.json中的值会覆盖solrconfig.xml中的值。
Config API端点所有Config API端点都是特定于集合的,这意味着此API一次只能检查或修改单个集合的配置。
_collection_/config:检索完整的有效配置,或修改配置。使用GET检索,使用POST执行命令。
_collection_/confi...
Solr配置:提交与事务日志详解
Solr配置:提交与事务日志详解在Solr中,文档在”提交”更新Lucene索引文件之前不可用于搜索。提交策略将决定文档添加、删除或更改何时可用于搜索。事务日志记录自上次”硬”提交点以来收到的文档更新。
solrconfig.xml中的<updateHandler>此部分中的设置在solrconfig.xml的<updateHandler>元素中配置,可能影响索引更新的性能。这些设置影响内部更新的完成方式。
<updateHandler>元素需要一个class参数,该参数必须是solr.DirectUpdateHandler2。Solr附带的_default配置集已经定义了此部分,但下面讨论的许多参数值可能需要为应用程序自定义。
12345<config> <updateHandler class="solr.Dire...
Solr配置:Collections API完整指南
Solr配置:Collections API完整指南SolrCloud集群包含许多组件。Collections API用于控制集群,包括集合、分片、副本、备份、领导者选举和其他操作需求。
由于此API具有大量命令和选项,我们将命令分组到以下子部分中:
集群节点管理:定义整个集群的属性;检查集群状态;从节点中删除副本;利用新添加的节点;为节点添加或删除角色。
集合管理:创建、列出、重新加载和删除集合;设置集合属性;将文档迁移到另一个集合;重新平衡领导者;备份和恢复集合。
别名管理:创建、列出或删除集合别名;设置别名属性。
分片管理:创建和删除分片;将分片拆分为两个或更多附加分片;强制分片领导者。
副本管理:添加或删除副本;设置副本属性;将副本移动到不同节点。
异步调用由于一些集合API调用可能是长时间运行的任务(如SPLITSHARD),您可以选择让调用异步运行。指定async=<...
Solr配置:集群单例插件详解
Solr配置:集群单例插件详解Solr发行版包含一些集群单例插件。可以添加其他插件 - 它们必须实现ClusterSingleton接口。如果插件实现了ConfigurablePlugin接口,配置条目还可以包含一个config元素。
插件配置集群单例插件可以通过两种方式进行配置,要么使用集群插件API,要么在solr.xml中声明它们。
所有集群插件必须使用相同的方法声明。不可能在solr.xml中声明某些插件并使用集群插件API来管理其他插件。
Solr内置的集群单例插件Solr包含以下开箱即用的插件。
非活动分片清理器此插件将定期查找并删除具有INACTIVE分片状态的分片。当分片被拆分时,分片变为INACTIVE,它们包含的文档现在由两个或多个子分片管理。
使用集群插件API进行配置
1234567891011curl -X POST -H 'Content-typ...
Solr配置:配置文件系统概述
Solr配置:配置文件系统概述Solr有几个在实现过程中需要交互的配置文件。
这些文件中的许多都是XML格式,尽管与配置设置交互的API根据需要倾向于接受JSON进行程序化访问。
Solr主目录当Solr运行时,它需要访问主目录。
当您首次安装Solr时,您的主目录是server/solr。但是,某些示例可能会更改此位置(例如,如果您运行bin/solr start -e cloud,您的主目录将是example/cloud)。
主目录包含重要的配置信息,并且是Solr存储其索引的地方。当您在用户管理集群或单节点安装中运行Solr与在SolrCloud集群中运行时,主目录的布局看起来会有所不同。
主目录的关键部分在这些示例中显示:
用户管理集群或单节点1234567891011121314<solr-home-directory>/ solr.xml core_n...
Solr配置:配置集管理完整指南
Solr配置:配置集管理完整指南什么是配置集(Configsets)?配置集是Solr安装中使用的一组配置文件:solrconfig.xml、模式文件以及语言文件、synonyms.txt等资源文件。
这样的配置(配置集)可以被命名,然后被集合或核心引用,从而允许您共享它们以避免重复。
Solr附带了两个示例配置集,位于server/solr/configsets,可以作为您自己配置的基础。这些示例配置集名为_default和sample_techproducts_configs。
SolrCloud集群中的配置集在SolrCloud中,理解配置集存储在ZooKeeper中而不是在文件系统中是至关重要的。Solr的_default配置集在初始化时上传到ZooKeeper。这个和一些示例配置集仍保留在文件系统中,但Solr不会使用它们,除非它们与新集合一起使用。
当您在SolrClou...
Solr配置:编解码器工厂详解
Solr配置:编解码器工厂详解在solrconfig.xml中可以指定codecFactory来确定将索引写入磁盘时使用的Lucene编解码器(Codec)。
如果未指定,Solr的SchemaCodecFactory会被隐式使用,就像它已经定义但没有配置选项一样:
1<codecFactory class="solr.SchemaCodecFactory" />
可用的编解码器工厂solr.LuceneDefaultCodecFactorysolr.LuceneDefaultCodecFactory使用Lucene的Codec.getDefault()方法,不支持任何配置选项。
示例:
1<codecFactory class="solr.LuceneDefaultCodecFactory" />
solr.Sch...
Solr配置:集群插件管理详解
Solr配置:集群插件管理详解集群(CoreContainer级别)插件子系统集群插件是在CoreContainer(节点)级别定义和实例化的可插拔组件。这些组件通常在Solr节点级别提供管理级功能和附加功能的API。
插件配置如果solr.cluster.plugin.edit.enabled属性设置为true(默认值),则可以使用/cluster/plugin API维护插件配置。
此API端点允许添加、删除和更新插件配置。
每个插件必须有一个唯一的名称来注册。尝试添加重复名称的插件会导致错误。某些类型的插件使用预定义的名称,并且必须在这些名称下注册才能正常运行。
从Solr 9.0开始,插件配置在内部维护在ZooKeeper的/clusterprops.json文件中,位于plugin条目下。配置是一个JSON映射,其中键是唯一的插件名称,值是序列化的org.apache.so...
Solr配置:缓存预热管理指南
Solr配置:缓存预热管理指南Solr的缓存系统为提高查询性能提供了重要的优化手段。缓存可以存储文档、查询中使用的过滤器以及先前查询的结果。
缓存在提交(commit)后会被清空,通常需要重新填充才能再次发挥作用。为了解决这个问题,缓存可以在新搜索器被认为开放之前进行”预热”,通过自动使用旧缓存中的值填充新缓存。
缓存管理对于成功的Solr实现至关重要,因此应该注意的是,随着应用程序的增长,缓存将需要进行微调。
solrconfig.xml中的<query>配置本节中的设置影响Solr处理和响应查询的方式。
这些设置都在solrconfig.xml中的<query>元素的子元素中配置。
12345<config> <query> ... </query></config>
缓存机制详解Solr缓存与特...
Solr入门:关于本指南
本指南详细描述了Apache Solr的所有重要特性和功能。
Solr可以从 http://solr.apache.org/ 免费下载。
指南设计理念本指南旨在提供高级文档,更多地作为百科全书而非操作手册。它的结构设计能够满足广泛的需求范围:
目标读者
用户类型
使用场景
获得价值
新手开发者
刚开始接触Solr
从零开始的学习路径
经验开发者
扩展应用或故障排除
深入的技术细节和最佳实践
任何阶段用户
应用生命周期的任何时点
权威的Solr信息参考
知识前提基本要求:
✅ 熟悉一些基本搜索概念
✅ 能够阅读XML
非必要但有帮助:
🔹 Java编程知识(在直接使用Lucene或开发Solr自定义扩展时有帮助)
主机和端口示例默认配置Solr默认端口:8983
示例适配说明本指南中的示例、URL和截图可能显示不同的端口,因为Solr使用的端口号是可配置...
Solr入门:AWS云端SolrCloud部署教程
本教程将指导您在Amazon Web Services (AWS) EC2实例上搭建多节点SolrCloud集群,适用于早期开发和设计阶段。
重要说明本教程不适用于生产环境。 主要原因包括:
使用了Solr内嵌的ZooKeeper实例
生产环境至少需要3个ZooKeeper节点组成集群
生产部署需要更多配置步骤,详见Solr生产部署指南
教程目标本教程将完成以下任务:
1. 启动多个AWS EC2实例
创建新的安全组(Security Group)
配置实例并启动
2. 在EC2实例上安装、配置并启动Solr
安装系统前置条件:Java 11或更高版本
下载最新版本的Solr
以SolrCloud模式启动Solr节点
3. 创建集合、索引文档并查询系统
创建包含多个分片和副本的集合
向新建集合索引文档
通过查询集合验证文档存在
开始之前使用本教程前,您必须具备:
一个AW...
Solr入门:术语词汇表
这里列出了Solr中使用的常见术语及其定义。掌握这些术语是深入学习Solr的基础。
A原子更新(Atomic Updates)一种只更新文档的一个或多个字段的方法,而不需要重新索引整个文档。这种方法提高了更新效率,特别适合大文档的部分字段更新场景。
应用场景:
更新产品价格而不重新索引产品描述
更新文章的阅读次数而保持内容不变
批量修改文档的某个标签或状态
B布尔操作符(Boolean Operators)通过使用AND、OR和NOT等操作符来控制查询中关键词的包含或排除的逻辑控制符。
常用操作符:
AND:两个条件都必须满足
OR:满足其中一个条件即可
NOT:排除特定条件
+:必须包含
-:必须不包含
示例:
1234java AND spring # 必须同时包含java和springjava OR python # 包含java...
Solr入门:搜索相关性原理
相关性是指查询响应满足搜索信息用户需求的程度。理解搜索相关性对于构建有效的搜索应用至关重要。
相关性的语境依赖性查询响应的相关性取决于执行查询的语境。单个搜索应用可能会被具有不同需求和期望的用户在不同语境下使用。
实际应用示例考虑一个气候数据搜索引擎,可能被以下不同用户使用:
用户类型
需求描述
相关性标准
大学研究员
研究长期气候趋势
需要全面、准确的历史数据
农民
计算春季最后一次霜冻可能日期
需要本地化、实用的预测信息
土木工程师
了解降雨模式和洪水频率
需要技术性强、精确的统计数据
大学生
规划某地区假期并考虑穿着
需要简单易懂的天气概况
由于这些用户的动机不同,对任何特定查询响应的相关性评价也会有所不同。
搜索全面性的考量查询响应应该多全面?与一般的相关性一样,这个问题的答案取决于搜索的语境。
成本效益分析不找到特定文档的成本在某些语境下很高,在...
Solr入门:管理界面详解
Solr提供了一个功能强大的Web管理界面,让您能够在线访问众多Solr配置选项和功能特性。
管理界面概览主控制台(Dashboard)通过访问URL http://hostname:8983/solr/ 可以看到主控制台,界面分为两个主要部分。
主控制台为Solr管理提供了集中化的入口点,展示系统的核心信息和状态。
左侧导航菜单屏幕左侧是位于Solr标志下的导航菜单,提供了UI各个功能页面的导航入口。
系统级别链接第一组链接用于系统级别的信息和配置,提供以下功能的访问:
日志记录界面:查看和配置系统日志
集合与核心管理:管理Solr集合和核心
Java属性界面:查看JVM属性信息
其他系统工具:各种系统管理功能
核心和集合选择器导航菜单底部提供下拉列表:
核心选择器:列出此Solr实例配置的所有核心
集合选择器(仅SolrCloud模式):显示集群中的所有集合
点击集合或核...
Solr教程:高级练习 - SolrCloud集群
本练习介绍SolrCloud的高级操作,包括向集群添加节点、配置管理和生产环境准备。
什么是SolrCloud?SolrCloud是Solr的分布式架构模式,提供:
高可用性:自动故障转移和恢复
水平扩展:轻松添加节点扩容
分布式索引:数据自动分片
负载均衡:查询自动分发
集中配置:通过ZooKeeper管理
核心概念集群组件
节点(Node):运行Solr实例的服务器
集合(Collection):逻辑上的完整索引
分片(Shard):集合的水平分区
副本(Replica):分片的复制
ZooKeeper:协调服务,管理配置和状态
副本类型
NRT(Near Real Time):可以成为主副本,处理更新
TLOG(Transaction Log):维护事务日志,可以成为主副本
PULL:只能从主副本拉取数据,不能成为主副本
向集群添加节点步骤1:创建新的Solr主目录12...
Solr教程:高级练习 - 向量搜索
本练习介绍Solr的向量搜索功能,展示如何使用向量嵌入实现语义搜索和推荐系统。
什么是向量搜索?向量搜索(Vector Search)是一种基于数学向量相似度的搜索技术:
将文本、图像等转换为高维向量
通过计算向量之间的距离找到相似内容
实现语义理解而非简单的关键词匹配
支持推荐系统和相似性搜索
核心概念向量嵌入(Embeddings)
将内容转换为固定维度的数值向量
相似内容的向量在空间中距离较近
可以捕获语义关系
相似度度量
余弦相似度:测量向量方向的相似性
欧几里得距离:测量向量之间的直线距离
点积:结合大小和方向的相似性度量
HNSW算法分层可导航小世界(Hierarchical Navigable Small World):
高效的近似最近邻搜索算法
构建多层图结构加速搜索
在准确性和性能之间取得良好平衡
设置向量搜索1. 创建带向量字段的集合定义10维向量字段...
Solr教程:高级练习 - ParamSets参数集
本练习演示如何使用ParamSets来组织和管理查询参数,这对于搜索相关性调优和A/B测试非常有用。
什么是ParamSets?ParamSets(参数集)是Solr的一个强大功能,允许您:
预定义和命名一组查询参数
在多个查询中重用参数配置
轻松切换不同的搜索算法
进行A/B测试和搜索优化
准备工作1. 创建Films集合1bin/solr create -c films
2. 定义模式字段添加name字段:
1234567curl -X POST -H 'Content-type:application/json' --data-binary '{ "add-field": { "name": "name", "type&...
Solr教程:练习三 - 索引您自己的数据
本练习将指导您使用自己的数据构建Solr搜索应用,这是将Solr应用于实际项目的关键一步。
关键目标
选择适合的个人数据集进行索引
为特定数据需求准备Solr配置
考虑重要的规划问题
选择合适的索引方法
规划阶段的重要问题在开始之前,请思考以下关键问题:
1. 数据类型分析
您将索引什么类型的数据?(文档、产品信息、日志、用户数据等)
数据的格式是什么?(JSON、XML、CSV、PDF、Word文档等)
数据量有多大?更新频率如何?
2. 字段和分析规则
需要哪些字段?(标题、内容、日期、分类等)
哪些字段需要搜索?哪些只需要存储?
需要什么样的文本分析?(分词、同义词、拼音等)
3. 搜索功能需求
用户将如何搜索?(关键词、短语、高级搜索)
需要哪些搜索特性?(高亮、拼写检查、自动建议)
如何排序和过滤结果?
4. 测试要求
如何验证搜索结果的准确性?
需要多少测试数据?...