自己的搜索引擎1,全文索引1

本文介绍如何构建一个全文搜索引擎的基础——倒排索引。讨论了倒排索引的基本原理,即从文档到词的索引转变为从词到文档的索引,并提出使用平衡二叉树来优化索引构建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搜索引擎的第一步,做一个自己的全文引擎,所谓的全文引擎,就是一个倒排表,所谓的倒排表,就是指从词到文档的索引。对于我们通常的文章来讲,是一个文章包含了很多的词,也就是说,文章是关键字,词是内容。那么当我们需要在很多文章中找到所有存在某一个词的文章的时候,在没有倒排索引的情况下,问题出现了,我们必须使用这个词去匹配所有文章的内容,这个效率显然是不能忍受的。这个时候就是倒排索引闪亮登场的时候了,倒排索引就是词是关键字,内容是所有包含这个关键字的文档和位置信息。所以,从理论上来讲,建所引的过程就是从:
    Doc    =>    (Word1,Word2....) 转换成
    Word1    =>    (Doc1,Doc2....)的过程。

    转换的时候,需要考虑一个性能的问题,因为对于一个文档中的每一个词,首先要做得事情就是察看这个词是不是在文章中已经出现过。这里实际上有两个相似的操作,第一个操作是把这个文章的词转换成倒排的格式,第二个操作是把第一步产生的倒排索引合并到达的索引上面去。我觉得还是分开两部操作比较好,因为如果一次性的把文章中出现的词合并到大的索引上面去,会出现很多次没有必要的比较,从而降低性能。
    为了提高创建索引的性能,我想在这里使用一个平衡二叉树,把所有的词作为这个平衡二叉树的节点,这样的话,插入一个节点比较的次数将是ln(n)次的比较,会比线形的n有很大的改善。明天是周末,把这个代码实现了。

To be continued.

转载于:https://www.cnblogs.com/abdias/archive/2008/04/11/1149097.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值