全文搜索的工作原理是什么?

全文搜索涉及两个主要阶段:编入索引(类似于为库创建地图)和搜索(从该地图中提取请求的信息)。

编制索引

在编入索引阶段,系统会分析文档的文本内容,并以结构化格式存储数据。此过程通常包括:

  • 词元化:将文本分解为单个字词或单元(称为词元)。这就像将句子拆分成单独的单词。
  • 词干提取:将字词缩减为根形式,例如将“running”改为“run”。这可确保在搜索时,同一字词的各种变体会被视为单个字词。
  • 停止字词移除:移除搜索中不太有意义的常用字词,例如“the”“a”和“is”。这有助于缩减索引大小并提高搜索速度。
  • 构建索引:创建将关键字映射到其在文档中的位置的数据结构。此索引可以作为路线图,让搜索引擎快速找到相关文档。

索引编入过程对于全文搜索系统的性能至关重要。结构合理的索引可以快速高效地检索相关文档,即使在庞大的数据集内也不例外。

正在搜索

创建索引后,用户可以在搜索阶段提交查询并检索相关结果。系统会分析搜索查询并使用索引来识别包含相关关键字的文档。

在搜索过程中,系统不会只寻找完全匹配的关键字。它还可以采用各种技术来提高结果的相关性。例如,它可能会考虑文档中关键字的邻近度,或内容与查询的相关性。

全文搜索方法

全文搜索有多种方法,每种方法都有自己独特的功能,可能更适合不同的需求。常见方法有:

基本搜索

这种简单的搜索方法匹配文档内的关键字,而不考虑其顺序或邻近度。例如,搜索“cat”和“dog”会返回包含任一字词的文档。

基本搜索比较简单,适用于简单的搜索场景,通常所需的计算能力较低,但有时可能会返回大量不相关的结果,尤其是在关键字比较常见的情况下。

模糊搜索

模糊搜索是一种更灵活的方法,支持拼写和拼写错误等变体。它会考虑字词相似度等因素,并允许用户查找包含字词略有变化(如“cat”和“cats”)的文档。

假设有一个论坛,用户在这里讨论“programing”技巧。由于此类拼写错误或拼写错误,搜索“programming”的标准搜索可能会遗漏论坛内容。但模糊搜索将“programing”识别为紧密变体形式,从而确保搜索结果中包含此类相关内容。

邻近性搜索

借助邻近性搜索,用户可以指定关键字之间的邻近度。例如,如果您搜索“cat NEAR dog”,系统会返回字词“cat”和“dog”彼此靠近的文档。

假设您正在处理数据和内容的历史归档。在全文搜索中使用邻近性方法,可以对应用进行配置,以帮助研究人员更快地找到有关特定关系的文档。如果搜索“Abraham Lincoln /3 Mary Todd”,则会优先搜索“Abraham Lincoln”出现在“Mary Todd”附近的那些文档。这样可提高返回的结果包含彼此关系相关信息的可能性,而不是显示提及每个人的单独文档。

此方法特别适合查找搜索字词之间的关系非常重要的文档。

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。