本页介绍了什么是全文搜索以及其运作方式。
概览
通过全文搜索,您可以构建一个可以搜索表格以查找 字词、短语或数字,而不是只搜索 结构化字段。全文搜索会返回最新的 向您的应用提交事务一致的数据。Spanner 全文搜索功能还包括拼写更正、 自动检测搜索输入的语言以及对搜索结果进行排名。 Spanner 会自动扩展文本搜索,以包含近似字词匹配。
您需要在任何要设为可用的列上创建搜索索引 进行全文搜索。Spanner 会分析这些列中的数据,以识别要添加到搜索索引中的各个字词。一旦新数据或修改后的数据提交到数据库,Spanner 就会使用这些数据更新搜索索引。
全文搜索类型
- 基本文本搜索:使用整个或部分文本进行搜索
更可靠地接收结果。查询谓词示例:
- 匹配所有字词 [tricolor rat terrier]
- 完全匹配的字词或短语 ["捕鼠梗犬"]
- 以下任意字词 [miniature OR standard]
- 相邻字词 [world AROUND(3) cup]
- 子字符串 [start*]
- 数字搜索:执行数字等式和不等式搜索。等式搜索会匹配数字。范围搜索和不等式搜索会匹配特定范围内的数字。
- 基于 n 元语搜索:匹配拼写变体形式的字词,包括专有名词和姓名。这种类型的搜索还有助于匹配查询文本 包含拼写错误的名称、拼写不同的名称,以及包含 拼写变体
- Soundex 搜索:匹配发音相似的字词。
全文搜索功能
Spanner 全文搜索具有以下特性:
- 排名搜索结果:计算得分以衡量查询与文档的匹配程度(例如,为 column_A 分配更大的权重)。使用 用于自定义排名的 SQL 表达式。
- 摘要:突出显示搜索结果中的匹配文本。
- 全球支持:自动支持不同环境下的令牌化 包括 CJK 细分。通过手动指定语言,您可以执行 微调。
- 治理:查找特定字词的每次出现。
- 拼写更正:自动更正查询中的拼写错误,以匹配存储空间中拼写正确的字词。例如,如果 用户搜索“girafe”,搜索会找到包含“giraffe”的文档。
- 添加上下文相关同义词,包括无效字词:自动添加 与情境相关的同义词来提高回想度。例如,“房子”与“这栋房子”相匹配,“猫照片”与“小猫照片”相匹配。
- 上下文数字与文本之间的转换:将数字的文本版本与数字表示法进行匹配,反之亦然。对于 例如“five cats”匹配“5 cats”。
- 自动复数转换:与“cat”匹配更改为“cats”。
全文搜索概念
全文搜索有以下关键概念:
- 文档是指给定行中的可搜索数据。
- 令牌是指存储在搜索索引中的文档中的每个字词。
- 标记化过程将文档拆分为多个词元。
- tokenizer 是用于标记化的 SQL 函数。
- 反转索引会存储词元。使用 SQL 查询搜索 反转索引。
全文搜索使用场景示例
为了解全文搜索,我们来看一个 使用数据库来存储每位歌手的歌曲。每一行代表一首歌曲。每首歌曲都包含标题、歌词、歌手和专辑等列。应用 使用全文搜索,让用户使用自然语言搜索歌曲 查询:
- 搜索支持使用
OR
运算符(例如Prince OR Camille
)的查询。应用可以直接将搜索框中的最终用户输入馈送到 SQLSEARCH
函数(使用查询语法)。 - Spanner 使用搜索索引查找匹配的文档 不同领域的表现例如,应用可能会发出 用于搜索“哭泣”的查询在主题行中注明“so 冷” 歌词中的“Prince”
搜索索引的其他用途
搜索索引除了全文搜索之外,还有各种各样的用途,例如 以下:
将数组列中的元素编入索引。假设有一个使用 存储与商品关联的标记的数组列。对于搜索索引, 可以有效地查找包含特定标记的行。有关 请参阅 数组标记化。
查找位于一组查询条件交集范围内的数据。例如,您可以使用任意一组属性 (颜色、尺寸、品牌、评分等) 目录。
使用数字搜索条件,单独使用或与全文搜索条件结合使用。以下是搜索索引对数字搜索有用的一些示例:
- 与全文应用结合使用时。例如,若要查找主题为图片且大小超过 1 MB 的电子邮件。
- 当它属于上述条件的交集时。
例如,查找
color = "yellow" AND size = 14 AND rating >= 4.5
的商品。 - 搜索数值列的交集时。对于
以存储事件开始时间和结束时间的表为例。搜索索引可以高效实现查询,以查找在特定时间点
start_time <= @p AND end_time > @p
发生的事件。
如需了解详情,请参阅数字索引。
全文搜索步骤
在 Spanner 中,全文搜索需要执行以下步骤:
- 使用 Spanner 分词器函数(例如
TOKENIZE_SUBSTRING
)对文档进行分词。如需了解详情,请参阅令牌化。 - 使用
CREATE SEARCH INDEX
DDL 语句创建一个搜索索引来存储令牌。如需了解详情,请参阅 搜索索引。 - 使用 Spanner
SEARCH
函数查询搜索索引中的文档。如需了解详情,请参阅查询概览。 - 使用 Spanner 对查询结果进行排名
SCORE
函数。如需了解详情,请参阅对搜索结果进行排名。
限制
- 全文搜索不支持 Assured Workloads。
价格
使用全文搜索时,Spanner 不会收取额外费用,但由于需要额外的计算和存储资源,实现全文搜索会增加费用。
如需了解详情,请参阅 Spanner 价格。
后续步骤
- 了解标记化和 Spanner 标记生成器。
- 了解搜索索引。
- 了解全文搜索查询。