From 173a190d006a1feda18d51f53a7e88d9db5055df Mon Sep 17 00:00:00 2001 From: zcp100_zcp100 Date: Wed, 28 Sep 2022 10:40:12 +0800 Subject: [PATCH] =?UTF-8?q?MogDB=20=E5=85=A8=E6=96=87=E6=A3=80=E7=B4=A2?= =?UTF-8?q?=E6=A6=82=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...00\347\264\242\346\246\202\350\277\260.md" | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 "content/zh/post/liuxu/MogDB \345\205\250\346\226\207\346\243\200\347\264\242\346\246\202\350\277\260.md" diff --git "a/content/zh/post/liuxu/MogDB \345\205\250\346\226\207\346\243\200\347\264\242\346\246\202\350\277\260.md" "b/content/zh/post/liuxu/MogDB \345\205\250\346\226\207\346\243\200\347\264\242\346\246\202\350\277\260.md" new file mode 100644 index 00000000..ed1b4a3e --- /dev/null +++ "b/content/zh/post/liuxu/MogDB \345\205\250\346\226\207\346\243\200\347\264\242\346\246\202\350\277\260.md" @@ -0,0 +1,51 @@ ++++ + +title = "MogDB 全文检索概述" + +date = "2022-09" + +tags = ["MogDB 全文检索概述"] + +archives = "2022-09" + +author = "由迪" + +summary = "MogDB 全文检索概述" + +img = "/zh/post/zhangcuiping/title/img.png" + +times = "10:20" + ++++ + +# MogDB 全文检索概述 + + + +文本搜索操作符在数据库中已存在多年。MogDB为文本数据类型提供、*、LIKE和ILIKE操作符;但它们缺乏现代信息系统所要求的许多必要属性。这些缺憾可以通过使用索引及词典进行解决。 + +文本检索缺乏信息系统所要求的必要属性: + +- 没有语义支持,即使是英语。 + + 由于要识别派生词并不是那么容易,因此正则表达式也不能满足要求。如,satisfies和satisfy,当使用正则表达式寻找satisfy时,并不会查询到包含satisfies的文档。用户可以使用OR搜索多种派生形式,但过程非常繁琐。并且有些词会有上千的派生词,因此容易出错。 + +- 没有对搜索结果的分类(排序)。当搜索出成千的文档时,查找效率很低。 + +- 由于没有索引的支持,每一次的搜索需要遍历所有的文档,整体搜索比较缓慢。 + +使用全文索引可以对文档进行预处理,并且可以使后续的搜索更快速。预处理过程包括: + +- 将文档解析成token。 + + 为每个文档标记不同类别的token是非常有必要的,例如:数字、文字、复合词、电子邮件地址,这样就可以做不同的处理。原则上token的类别依赖于具体的应用,但对于大多数的应用来说,可以使用一组预定义的token类。 + +- 将token转换为词素。 + + 词素像token一样是一个字符串,但它已经标准化处理,这样同一个词的不同形式是一样的。例如,标准化通常包括:将大写字母折成小写字母、删除后缀(如英语中的s或者es)。这将允许通过搜索找到同一个词的不同形式,不需要繁琐地输入所有可能的变形样式。同时,这一步通常会删除停用词。这些停用词通常因为太常见而对搜索无用。(总之,token是文档文本的原片段,而词素被认为是有用的索引和搜索词。)MogDB使用词典执行这一步,且提供了各种标准的词典。 + +- 保存搜索优化后的预处理文档。 + + 比如,每个文档可以呈现为标准化词素的有序组合。伴随词素,通常还需要存储词素位置信息以用于邻近排序。因此文档包含的查询词越密集其排序越高。 + +词典能够对token如何标准化做到细粒度控制。使用合适的词典,可以定义不被索引的停用词。 \ No newline at end of file -- Gitee