跳到主要内容

📘 Atlas Search 如何工作

Atlas Search 使用倒排索引来支持文本搜索查询。倒排索引是一种数据结构,将集合中的每个唯一词汇映射到包含该词汇的文档。索引按词汇排序,每个词汇引用包含它的文档。

简单的字符串搜索

当你在数据库中使用 LIKE 操作符或正则表达式进行简单查询时,数据库必须扫描集合中的每个文档以找到匹配的文档。这是一个缓慢的过程,随着集合中文档数量的增加,它会变得更慢。

简单的字符串搜索

全文搜索

全文搜索旨在搜索大量文本。例如,搜索引擎将使用全文搜索在其索引的所有网页中查找关键字。这种技术的关键是索引。

索引可以通过不同的方式完成,如批量索引或增量索引。然后,索引充当任何匹配文档的广泛词汇表。然后可以使用各种技术来提取数据。开源搜索库 Apache Lucene 使用倒排索引来查找匹配的项目。在我们的全文搜索中,每个词汇链接到匹配的文档项。

全文搜索

对于大量数据,这种技术比字符串搜索快得多。

索引创建

为了准备你的数据进行索引,你的数据将经过一个叫做分词的过程。分词是将文本流分解成单词、短语、符号或其他有意义元素(称为标记)的过程。这是通过一系列分词器完成的。分词器是搜索引擎的构建模块,它们负责从文本中生成标记。然后,这些标记存储在索引中。

在我们的示例中,它将首先去除任何变音符号(字母上方或下方的标记,如法语中的 é、à 和 ç)。然后,根据所使用的语言,算法将删除填充词,只保留词汇的词干。这样,“to eat”、“eating”和“ate”都被归类为相同的“eat”关键字。然后,它将大小写更改为仅使用大写或小写。确切的索引过程由所使用的分词器决定。

分词器

最后,索引将看起来像你数据中所有有意义词汇的词汇表。每个词汇都将链接到包含它的文档。

词汇表