Solr入门:术语词汇表

这里列出了Solr中使用的常见术语及其定义。掌握这些术语是深入学习Solr的基础。

A

原子更新(Atomic Updates)

一种只更新文档的一个或多个字段的方法,而不需要重新索引整个文档。这种方法提高了更新效率,特别适合大文档的部分字段更新场景。

应用场景

  • 更新产品价格而不重新索引产品描述
  • 更新文章的阅读次数而保持内容不变
  • 批量修改文档的某个标签或状态

B

布尔操作符(Boolean Operators)

通过使用AND、OR和NOT等操作符来控制查询中关键词的包含或排除的逻辑控制符。

常用操作符

  • AND:两个条件都必须满足
  • OR:满足其中一个条件即可
  • NOT:排除特定条件
  • +:必须包含
  • -:必须不包含

示例

1
2
3
4
java AND spring          # 必须同时包含java和spring
java OR python # 包含java或python任一即可
java NOT android # 包含java但不包含android
+java -android # 等同于上面的表达式

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
2
3
4
5
6
7
{
"id": "doc_001",
"title": "Solr教程",
"content": "这是一篇关于Solr的教程",
"author": "技术专家",
"tags": ["搜索", "Solr", "教程"]
}

E

集群组(Ensemble)

ZooKeeper术语,表示多个ZooKeeper实例同时运行并相互协调以实现容错的机制。

配置建议

  • 奇数个实例(如3、5、7)
  • 分布在不同物理节点
  • 网络连接稳定可靠

F

分面(Facet)

基于索引术语将搜索结果排列成类别的功能。

类型

  • 字段分面:按字段值分组统计
  • 范围分面:按数值或日期范围分组
  • 查询分面:按查询条件分组
  • 层次分面:多级分类结构

示例应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"facet": {
"categories": {
"type": "terms",
"field": "category"
},
"price_ranges": {
"type": "range",
"field": "price",
"start": 0,
"end": 1000,
"gap": 100
}
}
}

字段(Field)

要被索引/搜索的内容,以及定义Solr如何处理内容的元数据。

基本属性

  • 名称:字段的唯一标识符
  • 类型:数据类型(文本、数值、日期等)
  • 索引:是否可搜索
  • 存储:是否保存原始值
  • 多值:是否可包含多个值

I

逆文档频率(Inverse Document Frequency, IDF)

衡量术语一般重要性的指标。计算为总文档数除以包含特定单词的文档数。

公式

1
IDF = log(总文档数 / 包含该词的文档数)

作用

  • 常见词(如”的”、”是”)权重较低
  • 稀有词权重较高,更有区分度
  • 与词频(TF)结合形成TF-IDF权重

倒排索引(Inverted Index)

一种创建可搜索索引的方式,列出每个词以及包含这些词的文档,类似书后的索引,列出词汇和可以找到它们的页码。

结构示例

1
2
3
4
词汇 → 文档列表
"java" → [doc1, doc3, doc5]
"python" → [doc2, doc4, doc5]
"spring" → [doc1, doc6]

优势

  • 快速词汇查找
  • 节省存储空间
  • 支持复杂查询操作

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
2
test*    # 匹配test、testing、tester
te?t # 匹配test、text、tent

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中最重要的术语和概念。建议:

  1. 循序渐进:先掌握基础术语,再学习高级概念
  2. 实践结合:在实际使用中加深对术语的理解
  3. 持续更新:随着学习深入,不断完善术语知识
  4. 交叉参考:利用术语间的关联关系加强记忆

掌握这些术语将为您深入学习Solr奠定坚实的基础。

下一步学习

© 2025 Solr Community of China All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero