zoukankan      html  css  js  c++  java
  • 信息检索导论学习笔记(3)——词典及容错式检索

    词典搜索的数据结构



    如上图,倒排索引记录表构建好了。对于查询请求“Brutus”,我们首要任务是确定查询词项“Brutus”是否在词典的词项词汇表中,如果在,则返回该词项对应的倒排记录表的指针。词汇表的查找操作往往采用一种称为词典(dictionary)的经典数据结构,并且主要有两大类解决方法:哈希表方式和搜索树方式

    哈希表方式

    每个词项通过哈希函数映射成一个整数,映射函数的目标空间需要足够大,以减少哈希结果冲突的可能性。查询时,对于每个查询项分别进行哈希操作,并解决存在的冲突,最后返回每个查询词项对于的倒排记录表的指针

    优点:在哈希表的定位速度快于树中的定位速度

    缺点:(1)没办法处理词项的微小变形(2)不支持前缀搜索(3)如果词汇表不断增大,需要定期对所有词项重新哈希

    搜索树方式(二叉树以及B树)

    优点:支持前缀查询

    缺点:搜索速度略低于哈希表方式:O(logM),其中M是词汇表大小,即所有词项的数目。O(logM)仅仅对平衡树成立


    通配符查询

    B树结构词典通配符查询处理
    • 对mon*的查询操作,通过遍历B树
    • 对*mon的查询操作,通过遍历反向B树

    轮排索引

    基本思想:
    • 在字符集中引入一个新的符号$,用于标识词项结束
    • 将每个通配查询旋转,使*出现在末尾
    • 将每个旋转后的结果放在词典(B树)中。即对词典中的词项词汇表再进行一层索引

  • 相关阅读:
    1052 Linked List Sorting (25 分)
    1051 Pop Sequence (25 分)
    1050 String Subtraction (20 分)
    1049 Counting Ones (30 分)
    1048 Find Coins (25 分)
    1047 Student List for Course (25 分)
    1046 Shortest Distance (20 分)
    1045 Favorite Color Stripe (30 分)
    1044 Shopping in Mars (25 分)
    1055 The World's Richest (25 分)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3157134.html
Copyright © 2011-2022 走看看