lucene的倒排序索引

lucene倒排序索引:根据属性的值来查找记录
倒排序的步骤:
  文章1:Tom lives in Guangzhou,I live guangzhou too.
  文章2:He once lived in shanghai
1.取得关键词
  1.1进行分词-空格分词
  1.2没有实际的词进行过滤,标点符号过滤
    in once too 无具体含义过滤,标点符号,过滤掉
  1.3统一大小写,统一时态(过去式ed,现在进行时,将来时)
    lived,lives 转换为live
  最后的结果:

     

2.建立倒排序索引
  2.1关键词(按照字符顺序排序,通过二元搜索算法快速定位)
  2.2出现频率
  2.3出现位置(字符位置,关键词位置),lucene采用的时关键词位置

  
3.lucene将上面分别作为
  3.1词典文件(包含频率文件和位置文件的指针)
  3.2频率文件
  3.3位置文件

  分别对应关键词、出现频率、出现位置

  3.4使用field的概念,表达信息所在位置(如标题,文章,URL),field被记载在词典文件中,每个关键词都有一个field信息,每个关键词一定属于一个或者多个field

4.压缩算法
  4.1关键词进行压缩
  如: 第一个词 阿拉伯
    第二个词 阿拉伯语
    可以将第二个词压缩为<3,语>

  4.2对数字进行压缩
  数字保存与上一个值的差值
  上一文章号:16382
  当前文章号:16389
  当前压缩后保存7(只用一个字节)

5.应用场景:
  lucene先对词典二元查找,该词指向频率文件和出现位置,词典非常的小,所以整个过程时毫秒级,对比普通的顺序匹配算法,不建索引相当缓慢的。

猜你喜欢

转载自www.cnblogs.com/glblog/p/11897794.html
今日推荐