aihot  2020-11-12 11:21:28  OpenCV |   查看评论   

短语查询

  有些短语,顺序颠倒就会产生完全不同的含义,前面讲的索引查询方法只能找到交集,并无法支持特定顺序。

位置信息索引

  前面我们讲的倒排列表往往存储文档ID、单词频率和单词位置信息。依照单词位置信息就可以帮我们完成短语查询,比如发现根据单词位置信息发现两个单词是相邻并具有特定顺序关系。但是存储单词位置信息实际上会对单词倒排列表的长度产生影响,并且计算代价相当高。

双词索引

  一般而言,二词短语在短语中所占比例最大,我们可以建立双词索引来满足二词短语的查询需求:

双词索引

双词索引

  首词词典指向下词词典的某个位置,下词词典存储了紧跟在首词后面的第二个词,下词的词典指针用来指向包含这个短语的倒排列表。比如用户输入『我的父亲』,先将其拆成两个短语『我的』和『的父亲』,分别查找词典信息,发现『我的』这个短语出现在文档5和文档7,而包含『的父亲』的文档中又包含文档5,看起对应的出现位置,可以发现其满足需求。

  双词索引同样使得索引急剧增大,所以一般只用双词索引处理包含『我』、『的』等停用词的短语。

短语索引

  我们也可以直接在索引中加入短语索引,这样的缺点在于并不可能实现将所有的短语都建好索引,通用的做法是挖掘出热门短语,为这些短语专门建立索引。

混合索引

混合索引

混合索引

分布式索引

  当搜索引擎需要处理的文档集合数量非常庞大时,单机往往难以承担维护整个索引的任务。所以需要分布式的解决方案。

  有两种经典的划分方式,一种是按文档划分,也即将整个文档集合切割成若干子集合,每台机器负责对某个文档子集建立索引,并相应查询请求;另一种是按单词划分,每个索引服务器负责词典中部分单词的倒排索引列表的建立和维护。

  按文档划分的方式在多种条件下基本都优于按单词划分的方式。举个例子,比如某台索引服务器宕机,如果采用按文档划分的方式,部分单词的搜索结果中会少掉一部分文档,这部分文档还不一定是排在前面的文档,影响不会很大。但是如果采用的是按单词划分的方式,那这些单词的搜索结果会完全丢失,用户无法使用这些关键词进行查询,对用户体验的影响要大的多。

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自浅谈搜索引擎基础(上)

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]