地理数据库中的全文索引
全文索引是一种特殊的索引,它存储了文本字段中各个单词(令牌)及其具体位置的信息。 创建后,它能够对大量文本进行快速搜索,以查找特定的单词、短语或表达式。
全文索引旨在增强数据库中的文本搜索能力。 与侧重于特定列的属性索引和处理地理数据的空间索引不同,全文索引通过索引每个单词来优化文本字段内的搜索。 这可以实现高效搜索、诸如短语搜索之类的复杂查询,以及更快速地检索相关文本数据。
有关属性索引、全文索引和空间索引的并排比较,请参阅地理数据库中的索引。
全文索引的目的和优势
全文索引的主要目的是提高查找文本数据的速度和准确性。 优势包括:
高效的文本搜索 - 与常规属性索引相比,全文索引通常能实现更快的文本字段搜索速度。 这是因为全文索引针对文本搜索操作进行了优化,从而减少了扫描整个表格的需求
复杂的查询能力 - 全文索引支持复杂的查询,例如短语和邻近搜索,并按相关性对结果进行排序。
性能提升 - 使用全文索引为文本数据建立索引可以极大地增强搜索性能,尤其是在文本搜索需要消耗大量资源的大型数据集中。
多字段支持 - 在 SQL Server 中,全文索引可以覆盖表中的多个字段,从而允许跨列进行全面搜索。
当需要在文本字段中执行复杂的文本搜索时,请考虑使用全文索引。 更具体地说,全文索引尤其适用于以下情况:
单词搜索 - 在文本字段中搜索单个词语,例如 hurricane 或 Florida。
短语搜索 - 通过在单词两端加上双引号来搜索短语,例如 "evacuation routes"。
示例
为了更好地解释使用全文索引的益处,请考虑以下类比示例:
- 书籍的目录显示了每个章节所在的位置。 如果您想查找第 7 章,可以查看目录,找到对应的页码并找到所需内容。 如果您试图回忆一句包含“mankind”单词的重要引言,但不知道它在哪一章,目录就无法提供帮助。 除非这本书有全文索引,否则您需要翻阅整本书才能找到这句引用。 全文索引列出了书中每个单词及其出现的页码。 这样,您能够快速搜索像 mankind 这样的词语并找到像 "one giant leap for mankind" 这样的短语。
以下场景举例说明了全文索引的实用性。
一家天燃气公用事业公司对其管网的检查报告和安全文件进行跟踪管理。 通过对包含检查报告、安全说明和维护日志的地理数据库的文本字段应用全文索引,可以支持对 gas leak 或 pipeline corrosion 等术语的短语进行全文搜索,从而提高安全检查和维护计划的速度和准确性。

全文索引的工作原理
全文索引是一种强大的工具,能够帮助用户快速搜索大量基于文本的数据。 在字段上创建全文索引后,便可以对海量文本内容进行快速而高效的文本搜索,查找特定的词语、短语或表达方式。
ArcGIS 的多个部件都提供了文本搜索功能,包括:
ArcGIS Portal Directory REST API - 用于通过 Web 服务查询数据。
ArcObjects - 用于以编程方式访问和操作 GIS 数据。
定位窗格 - 在 ArcGIS Pro 中,使用定位窗格将全文搜索模式、全文开头为或全文等于应用到要搜索的字段。

了解有关全文搜索模式的详细信息以及如何使用“定位”窗格定位已配置的要素或记录
注意:
ArcGIS Pro 提供了创建基本全文索引的功能。 对全文索引的管理和自定义选项必须使用 DBMS 工具在 DBMS 级别手动完成。
以下场景以高级且简化的方式模拟了全文索引是如何创建、存储和使用,从而实现快速准确地搜索和检索文本数据的过程。
GIS.Storm_Damage_Assessment 表包含多个属性字段,详细记录了建筑物所有者在近期风暴后报告的房屋损坏类型、严重程度和描述。 此表中未显示的额外字段包括所有者的地址和联系方式。

作为这些建筑物所有者的保险代理人,,通过在 Damage _Description 字段上设置全文索引,您能够快速搜索 Gutters、Shingles、Window、Roof 或 Leaks 等关键词,从而根据具体损坏情况和所需的维修工作,为建筑物所有者推荐最合适的承包商。
使用添加全文索引工具创建全文索引。 在此示例中,已指定了表名
GIS.Storm_Damage_Assessment和包含要索引的文本数据的字段Damage_Description。
填充索引的过程包括将指定字段中的文本分解为单独的关键词(令牌),然后对这些词条进行组织、追踪,并记录每个词条在原始文本字段中的确切位置,以便快速访问。
案例研究:
下面的插图以高级且简化的方式模拟全文索引是如何分解为单独的关键词,以及它们的位置是如何映射回文本字段的。
在本示例中,来自
GIS.Storm_Damage_Assessment表的Damage_Description字段第一行中的第一个属性值为 Missing or Lifted Shingles。 作为此全文索引如何填充的模拟,此文本将被分解为以下关键词,并按字母顺序组织,同时记录每个关键词在指定Damage_Description文本字段中出现的精确位置。Missing - 出现 4 次,分别在第 1、4、8 和 9 行
Lifted - 出现 2 次,分别在第 1 和 9 行
Shingles - 出现 6 次,分别在第 1、3、4、5、8 和 9 行

该索引相当于已索引字段中所有关键词的词汇表,用于组织和追踪每个单词在原始索引中出现的精确位置。 此过程将持续进行,直到指定文本字段中的所有文本都被分解为关键词、组织起来,并记录下每个关键词出现的位置。
完成在
Damage_Description字段上创建全文索引后,即可使用定位窗格将全文索引模式全文等于应用到Damage_Description字段。
对于此示例,您可以从定位窗格搜索单词 Shingles
如果没有应用全文索引,搜索将需要执行耗时更长的全表扫描。 但是,由于已在
Damage_Description字段上创建了全文索引,因此您可以从“定位”窗格中查询该字段以查找单个单词 Shingles。 定位窗格使用全文搜索快速识别术语 Shingles,并定位该关键术语在索引字段中出现的所有行,类似于以下内容。
搜索结果将允许您快速识别涉及屋顶木瓦的任何损坏报告,以便建筑物业主可以根据报告的具体损坏联系最合适的承包商。
ArcGIS 中的全文索引管理
ArcGIS Pro 创建全文索引的方式取决于地理数据库的类型,对于企业级地理数据库,创建方式还会因所使用的数据库管理系统而异。 接下来的两节将解释这些功能差异。
注:
如果您正在使用全文索引,请考虑以下事项:
文件地理数据库或 Db2 中的企业级地理数据库不支持全文索引。
单个索引与多个索引 - 在某些 RDBMS 中,每张表可能只支持一个全文索引,而其他系统则可能允许多个。
维护 - 全文索引需要由基础数据源进行维护。 它们会进行更新以反映数据的变化,这可能会影响搜索性能。
移动地理数据库中的全文索引
移动地理数据库支持全文索引。 移动地理数据库存储在 SQLite 数据库中,该数据库包含本地 FTS5 扩展模块。 SQLite FTS5(全文搜索)扩展模块用于移动地理数据库中的全文索引,并创建虚拟表和额外的辅助表来管理全文索引。 这意味着移动地理数据库也支持本地 FTS5 扩展模块。
企业级地理数据库中的全文索引
ArcGIS Pro 支持在以下每个受支持的数据库管理系统平台的地理数据库中的表或要素类上创建全文索引,每个平台都有特定的配置:
Oracle
支持对非 Unicode 文本字段进行全文索引。
需要将 Unicode 字段转换为非 Unicode 格式才能进行索引。
提示:
使用迁移文本字段工具将现有符合条件的 Unicode 文本字段类型迁移为非 Unicode 类型。 输入数据集必须来自 Oracle 企业级地理数据库,可以迁移到非 Unicode 文本字段类型的符合条件的 Unicode 文本字段类型包括:
NVARCHAR2 将转换为 VARCHAR2。
NCHAR 将转换为 VARCHAR2。
NCLOB 将转换为 CLOB。
提交时同步是一个可选参数,仅在 Oracle 企业级地理数据库中的表或要素类上使用添加全文索引工具时可用。 提交时同步可用于指定在保存编辑或执行 ArcGIS 同步操作时是否自动更新全文索引。

PostgreSQL
- 支持为每个字段创建一个全文索引。
SQL Server
全文搜索功能是 SQL Server 数据库引擎的一个可选组件,在满足以下要求之前必须先启用它。 如果您的 SQL Server 实例尚未启用全文功能,您需要重新运行 SQL Server 的安装程序。
SQL Server 全文目录是一个用于容纳一个或多个全文索引的虚拟容器。 使用 SQL Server 在每个将创建全文索引的 SQL Server 数据库中至少创建一个全文目录。
每个数据库可以有多个全文目录,但一个全文索引必须仅属于一个全文目录。 您可以指定一个默认全文目录,如果在创建全文索引时没有指定其他目录,则将使用该默认目录。
每个需要创建全文索引的用户都必须对该索引将要归属的全文目录拥有 REFERENCES 权限。
SQL Server 支持为每个表创建一个全文索引,该索引可以包含多个字段。
SAP HANA
- 与 PostgreSQL 类似,其支持为每个字段创建一个全文索引。
添加全文索引
要使用添加全文索引工具向移动或企业级地理数据库中指定的文本字段添加全文索引,从而支持按单个列或多个列进行搜索,请按照以下步骤操作:
注:
文件地理数据库或 Db2 中的企业级地理数据库不支持添加全文索引工具。
打开添加全文索引地理处理工具,方法是导航至分析选项卡,然后在地理处理组中单击工具。 或者,您可以在数据管理工具工具集的索引工具箱中搜索该工具。

将显示添加全文索引地理处理工具对话框,其中包含默认设置。

在输入表下拉菜单中,选择单个数据集,或者使用浏览按钮
选择要添加全文索引的要素类或表。注:
了解有关 ArcGIS 中的全文索引管理的详细信息。
对于要索引的字段,选择将要应用全文索引的单个字段或多个字段。

注:
某些数据库仅支持为全文索引的创建选择单个字段。 对创建多字段全文索引的支持因数据库而异。
(可选)此参数的名称将根据输入表的数据源而变化。
全文索引名称 - 为将要创建的索引提供一个名称。 全文索引名称参数默认显示。

注:
对于 SQL Server、SQLite 和移动地理数据库,全文索引名称参数将被忽略。
全文目录名称 - 选择您要用于全文目录名称参数的 SQL Server 全文目录的名称。 全文目录名称选项仅适用于 SQL Server。

注:
如果未提供全文目录名称,该工具将尝试使用为数据库定义的默认全文目录(如果可以访问)。 否则,请从下拉列表中选择一个全文目录。 此下拉列表包含连接的用户有权访问的所有全文目录。
单击运行,向字段添加全文索引。
添加全文索引工具完成后,打开表或要素类的属性对话框。 在索引选项卡下,属性索引部分会显示此数据集的现有索引。 选择新创建的索引,下方的全文参数将显示是,以指示这是一个全文索引。

何时更新全文索引
全文索引由 RDBMS 维护,应定期更新以反映数据的变化,确保搜索结果的准确性。 全文索引的更新频率取决于对数据进行的编辑量以及您的数据库配置。 企业级地理数据库中全文索引的管理、更新和重建需要在 DBMS 级别使用 DBMS 工具手动完成。
对于移动地理数据库,SQLite FTS5(全文搜索)扩展模块通过创建在基础数据发生变化时自动更新的虚拟表来实现高效的全文搜索,从而无需手动重建索引。
