新闻动态
搜索引擎动态索引
https://www.sytm.net 发布日期:2013/9/1 7:34:19

如果搜索引擎需要处理的文档集合是静态集合,那么在索引建立好后,就可以一直用建好的索引响用户查询请求,但是,在真实环境中,搜索引擎需要处理的文档集合往往是动态集合,即在建好初始的索引后,后续不断有新文档进入系统,同时原先的文档集合内有些文档可能被删除 或者内容被更改。典型的例子就是桌面搜索,当新下载一篇文档,那么搜索系统需要及时将其纳入,删除某篇文档也需要在非常短的时间内在搜索结果里体现出来。大多数搜索引擎面临的应用场景类似的动态环境。

索引系统如何能做到实时反映这种变化呢?动态索引可以实现这种实时性要求,在这种动态索引中,有3个关键的索引结构:倒排索引、临时索引和已删除文档变化。

倒排索引

倒排索引就是对初始文档集合建立好的搜索结构,一般单词词典存储在内存,对应的倒排列表存储在磁盘文件中。临时索引是在内存中实时建立的倒排索引,其结构和前述的倒排索引是一样的,区别在于词典和倒排列表都在内存中存储。当有新文档进入系统时,实时解析文档并将其追加进这个临时索引结构中。已删除文档列表则用来存储已被删除的文档的相应文档ID,形成一个文档ID列表。这里需要注意的是:当一篇文档内容被更改,可以认为是旧文档先被删除,之后向系统内增加一篇新的文档,通过这种间接方式实现对内容更改的支持。

临时索引

当系统发现有新文档进入时,立即将其加入临时索引中。有文档被删除时,则将其加入删除文档队列。文档被更改时,则将原先文档放入删除队列,解析更改后的文档内容,并将其加入临时索引中。通过这种方式可以满足实时性的要求。

已删除文档变化

如果用户输入查询请求,则搜索引擎同时从倒排索引和临时索引中读取用户查询单词的倒排列表,找到包含用户查询的文档集合,并对两个结果进行合并,之后利用删除文档列表进行过滤,将搜索结果中那些已经被删除的文档从结果中过滤,形成最终的搜索结果,并返回给用户,这样就能够实现动态环境下的准实时搜索功能。

更多阅读
返回列表
© 2010 TianMei Technology All rights reserved. ICP:辽B2-20150138辽公网安备 21010202000010号  目录概览