这里列出了Solr中使用的常见术语及其定义。掌握这些术语是深入学习Solr的基础。
A
原子更新(Atomic Updates)
一种只更新文档的一个或多个字段的方法,而不需要重新索引整个文档。这种方法提高了更新效率,特别适合大文档的部分字段更新场景。
应用场景:
- 更新产品价格而不重新索引产品描述
- 更新文章的阅读次数而保持内容不变
- 批量修改文档的某个标签或状态
B
布尔操作符(Boolean Operators)
通过使用AND、OR和NOT等操作符来控制查询中关键词的包含或排除的逻辑控制符。
常用操作符:
AND
:两个条件都必须满足OR
:满足其中一个条件即可NOT
:排除特定条件+
:必须包含-
:必须不包含
示例:
1 | java AND spring # 必须同时包含java和spring |
C
集群(Cluster)
在Solr中,集群是一组通过ZooKeeper相互协调运行并作为一个单元管理的Solr节点。一个集群可能包含多个集合。
特点:
- 高可用性:节点故障时自动切换
- 负载分担:查询分布到多个节点
- 数据冗余:通过副本确保数据安全
集合(Collection)
在Solr中,使用单一配置和模式将一个或多个文档组合在一个逻辑索引中。
在SolrCloud中,集合可能被分成多个逻辑分片,这些分片又可能分布在许多节点上。
单节点安装和用户管理的集群使用核心(Core)的概念。”集合”最常用于SolrCloud语境,但由于它代表”逻辑索引”,该术语也可用于指用户管理集群中的个别核心。
提交(Commit)
使文档更改在索引中永久化。对于添加的文档,在提交后它们才能被搜索到。
提交类型:
- 硬提交:将更改持久化到磁盘
- 软提交:使更改可搜索但不持久化
- 自动提交:按配置的间隔自动执行
核心(Core)
单个Solr实例(代表一个逻辑索引)。多个核心可以在单个节点上运行。
与集合的区别:
- 核心:物理实现,单节点概念
- 集合:逻辑概念,SolrCloud概念
核心重载(Core Reload)
在模式文件、solrconfig.xml或其他配置文件更改后重新初始化Solr核心。
触发场景:
- 模式字段定义修改
- 配置参数调整
- 插件更新或更换
D
分布式搜索(Distributed Search)
查询处理跨多个分片执行的搜索方式。
优势:
- 提高查询并发性
- 支持大规模数据处理
- 实现查询负载均衡
文档(Document)
一组字段及其值的组合。文档是集合中数据的基本单位。
特点:
- 使用标准散列分配给分片
- 可通过文档ID指定分片
- 每次写入操作后都有版本控制
结构示例:
1 | { |
E
集群组(Ensemble)
ZooKeeper术语,表示多个ZooKeeper实例同时运行并相互协调以实现容错的机制。
配置建议:
- 奇数个实例(如3、5、7)
- 分布在不同物理节点
- 网络连接稳定可靠
F
分面(Facet)
基于索引术语将搜索结果排列成类别的功能。
类型:
- 字段分面:按字段值分组统计
- 范围分面:按数值或日期范围分组
- 查询分面:按查询条件分组
- 层次分面:多级分类结构
示例应用:
1 | { |
字段(Field)
要被索引/搜索的内容,以及定义Solr如何处理内容的元数据。
基本属性:
- 名称:字段的唯一标识符
- 类型:数据类型(文本、数值、日期等)
- 索引:是否可搜索
- 存储:是否保存原始值
- 多值:是否可包含多个值
I
逆文档频率(Inverse Document Frequency, IDF)
衡量术语一般重要性的指标。计算为总文档数除以包含特定单词的文档数。
公式:
1 | IDF = log(总文档数 / 包含该词的文档数) |
作用:
- 常见词(如”的”、”是”)权重较低
- 稀有词权重较高,更有区分度
- 与词频(TF)结合形成TF-IDF权重
倒排索引(Inverted Index)
一种创建可搜索索引的方式,列出每个词以及包含这些词的文档,类似书后的索引,列出词汇和可以找到它们的页码。
结构示例:
1 | 词汇 → 文档列表 |
优势:
- 快速词汇查找
- 节省存储空间
- 支持复杂查询操作
L
主副本(Leader)
每个分片中负责协调索引更新(文档添加或删除)到同一分片中其他副本的单个副本。
职责:
- 处理写入请求
- 协调副本同步
- 维护数据一致性
选举机制:
- 自动选举产生
- 主副本下线时自动重新选举
- 基于ZooKeeper实现
M
元数据(Metadata)
字面意思是”关于数据的数据”。元数据是关于文档的信息,如标题、作者或位置。
常见类型:
- 描述性元数据:标题、作者、摘要
- 结构性元数据:格式、大小、创建时间
- 管理性元数据:访问权限、版本信息
N
自然语言查询(Natural Language Query)
以用户正常说话或写作方式输入的搜索,如”什么是阿司匹林?”
特点:
- 更符合用户习惯
- 需要复杂的语义理解
- 常配合智能查询解析器使用
节点(Node)
运行Solr的JVM实例。也称为Solr服务器。
角色类型:
- 数据节点:存储和处理数据
- 协调节点:仅路由请求,不存储数据
- 主节点:处理集群管理任务
O
乐观并发控制(Optimistic Concurrency)
也称为”乐观锁定”,这是一种允许更新索引中当前文档同时保留锁定或版本控制的方法。
工作原理:
- 读取时不加锁
- 更新时检查版本号
- 版本冲突时操作失败
适用场景:
- 并发更新较少的场景
- 对性能要求较高的应用
监督者(Overseer)
SolrCloud中负责处理和协调涉及整个集群行动的单个节点。
职责:
- 跟踪节点、集合、分片和副本状态
- 分配新副本到节点
- 处理集群级别的操作请求
Q
查询解析器(Query Parser)
处理用户输入术语的组件。
常用类型:
- 标准解析器:支持完整Lucene查询语法
- DisMax:用户友好,容错性好
- eDisMax:增强版DisMax,功能更强
R
召回率(Recall)
搜索引擎检索用户查询的所有可能匹配项的能力。
公式:
1 | 召回率 = 检索到的相关文档数 / 系统中全部相关文档数 |
相关性(Relevance)
文档对用户执行的搜索的适当性程度。
影响因素:
- 词频和文档频率
- 字段权重设置
- 用户搜索意图
- 业务规则约束
副本(Replica)
在SolrCloud集合中作为分片物理副本的核心。
类型:
- NRT副本:可处理写入和搜索
- TLOG副本:维护事务日志
- PULL副本:仅处理搜索请求
复制(Replication)
将主索引从一个服务器复制到一个或多个”从属”或”子”服务器的方法。
应用场景:
- 读写分离
- 灾难恢复
- 地理分布部署
请求处理器(RequestHandler)
告诉Solr如何处理传入”请求”的逻辑和配置参数,无论请求是返回搜索结果、索引文档还是处理其他自定义情况。
常见类型:
- 搜索处理器
- 更新处理器
- 数据导入处理器
- 自定义处理器
S
搜索组件(SearchComponent)
请求处理器用于处理查询请求的逻辑和配置参数。
常见组件:
- 查询组件
- 分面组件
- 高亮组件
- 拼写检查组件
- 更多相似功能组件
分片(Shard)
在SolrCloud中,单个集合的逻辑分区。
特点:
- 每个分片至少包含一个物理副本
- 可在多个节点间分布多个副本
- 实现容错和负载均衡
SolrCloud
Solr中一套功能的统称术语,允许管理Solr节点集群以实现可扩展性、容错和高可用性。
核心特性:
- 自动分片
- 副本管理
- 故障转移
- 负载均衡
- 集中配置
Solr模式(Schema)
Solr索引模式定义要索引的字段和字段类型(文本、整数等)。
文件类型:
- managed-schema.xml:动态管理,运行时可修改
- schema.xml:静态模式,仅启动时加载
SolrConfig配置文件
Apache Solr配置文件。定义索引选项、请求处理器、高亮、拼写检查和各种其他配置。
主要内容:
- 索引配置
- 缓存设置
- 请求处理器定义
- 插件配置
拼写检查(Spell Check)
向用户建议搜索术语的替代拼写的能力,作为对拼写错误导致很少或零结果的检查。
功能:
- 自动纠错建议
- 拼写错误检测
- 查询扩展推荐
停用词(Stopwords)
通常对用户搜索意义不大但可能作为自然语言查询一部分输入的词。
常见停用词:
- 中文:的、了、是、在、有、和
- 英文:the、of、and、a、to、in
建议器(Suggester)
Solr中提供在用户输入时建议可能查询术语能力的功能。
类型:
- 自动完成
- 拼写建议
- 查询历史建议
- 智能推荐
同义词(Synonyms)
通常在意义上彼此接近并可能相互替代的术语。
示例:
- “公司” ↔ “企业”、”厂商”
- “手机” ↔ “移动电话”、”手机”
- “汽车” ↔ “轿车”、”车辆”
T
词频(Term Frequency)
单词在给定文档中出现的次数。
计算方式:
1 | TF = 词在文档中出现次数 / 文档总词数 |
作用:
- 衡量词在文档中的重要性
- 与IDF结合计算TF-IDF权重
- 影响文档相关性评分
事务日志(Transaction Log)
每个副本维护的写入操作的仅追加日志。
用途:
- 确保数据一致性
- 支持增量复制
- 故障恢复依据
W
通配符(Wildcard)
允许替换单词的一个或多个字母以考虑拼写或时态可能变化的符号。
符号:
*
:匹配零个或多个字符?
:匹配单个字符
示例:
1 | test* # 匹配test、testing、tester |
Z
ZooKeeper
也称为Apache ZooKeeper。SolrCloud用来跟踪集群配置文件和节点名称的系统。
功能:
- 集群配置中央存储
- 分布式同步协调器
- 集群拓扑记录系统
部署建议:
- 使用奇数个节点(3、5、7)
- 独立于Solr节点部署
- 确保网络稳定性
术语使用建议
初学者重点掌握
优先级 | 术语 | 重要性说明 |
---|---|---|
⭐⭐⭐ | Collection、Core、Document、Field | 基础数据结构概念 |
⭐⭐⭐ | SolrCloud、Shard、Replica | 分布式架构核心 |
⭐⭐⭐ | Query Parser、Facet | 搜索功能基础 |
⭐⭐ | Commit、Schema、Index | 数据管理概念 |
⭐⭐ | Node、Cluster、ZooKeeper | 集群管理概念 |
进阶学习重点
- 性能相关:TF-IDF、Inverted Index、Transaction Log
- 运维相关:Leader、Overseer、Replication
- 开发相关:RequestHandler、SearchComponent、Atomic Updates
总结
这个词汇表涵盖了Solr中最重要的术语和概念。建议:
- 循序渐进:先掌握基础术语,再学习高级概念
- 实践结合:在实际使用中加深对术语的理解
- 持续更新:随着学习深入,不断完善术语知识
- 交叉参考:利用术语间的关联关系加强记忆
掌握这些术语将为您深入学习Solr奠定坚实的基础。
下一步学习
- Solr入门:5分钟快速上手 - 实践中理解术语
- [Solr概念:Apache Solr简介与核心特性](/Solr概念:Apache Solr简介与核心特性/) - 深入理解核心概念
- Solr配置:配置文件体系 - 学习配置相关术语的实际应用