Lucene Luke源码分析

简介: 假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。

VocabAnalysisPluginZipfAnalysisPlugin源码分析
首先明白二者分析输出的是啥,有什么作用。
1)下面是VocabAnalysisPlugin截图

image.png

唯一id域输出

image.png

keywords域输出

image.png

keywords 域输出


Id 域完全不重复输出上图

不同文档集合的时候,覆盖这个域当前词典的情况。出现平行或者缓行时,随着文档增加,这个域的新词没有同步增加,或者增加趋势不大

分析图可以得到

  1 某个域的Term增长情况,也就反应词典规模

  2 越平,反应文档中重复的内容越多,文档的质量不是很好

  3 随着文档集合的扩大,FieldTerm结合也在扩大,趋势可以反应后面的文档添加共享新词的粒度问题。 

源码分析
   float firstDocId = td.doc();//firstDocId
表明首次出现 理解这个非常重要
term统计就观察,随着文档的添加,这个域里面的term集合扩展情况,间接发现新增文档的内容质量,只统计首次出现了该term,而不是统计全部的。新增docid是递增的。 输出group的时候,也是按照id递增聚合起来,这样上图就顺利的生成了。

2ZipfAnalysisPlugin

基本原理:

Step1 收集df

遍历指定域,去每个term,取termdf。小于df的长尾数组收集,大于df的链接数组收集。

Step2 df排序

longtail term 数组排序,按df降序

Step3初始桶个数100

唯一词数量小于初始值100,那每个term一桶,

唯一词数量大于初始值100,每个桶最多 totalNum/初始值

Step4

将排序的long-tail 数组元素,依次put到桶中,桶满就new一个

Step5

short-tail 数组元素,从后向前依次put到桶中,桶满就new一个

Step6

  遍历桶链,取最大的df 均值

桶的行为:只统计了Term数目、最大、最小df值、df总和、平均值

重要概念理解

  most terms occur very infrequently - just keep group totals for the DFs

  representing these "long tail" terms.

// 低频term分组聚会起来,保存他们的DFS 的和,和代替长尾

// 将出现term关联文档的个数低于1000的作为长尾的End

 

// For "short tail" terms there are less of them and they represent a lot of different DFs (typically in the thousands),so unlike long-tail terms ,we can't predict what common DF buckets to accumulate counts in. For this reason, we don't attempt to total them and keep a list of them individually (shouldn't occupy too much ram)

端链的-长尾词,聚会起来,计数他们的数量,然后从长到短收集到桶中。端链的收集时就合

长链的-端尾词,按照df降序,然后收集到桶中,长链的

 

横坐标表示:keywords这个域中不同term总数,纵坐标表示桶中df均值。

从左至右看,越右边越是长尾。这里对长尾的定义:稀有TermTerm关联的文档数量。

图中左边没有完整,因为df大于长尾的df=1000词没有出现。

 

低频词覆盖范围 或者说长尾词覆盖范围  长尾词对搜索引擎营销有帮助  
另外长尾词搜索时,结果更准确。长尾词被查询的比例很大的话,那么搜索收益会更多,这是长尾在网络的效应

目录
相关文章
|
存储 自然语言处理 算法
Lucene学习总结
Lucene学习总结
75 0
Lucene学习总结
|
XML 自然语言处理 搜索推荐
使用Luke Lucene进行索引
目录 luke 简介 luke下载及安装 luke 使用 打开luke Overview选项卡 Documents选项卡 search选项卡 Commits选项卡 Plugins选项卡 导出索引为XML 检查索引正确性 总结 1. luke 简介 luke### 是一个用于Lucene/Solr/Elasticsearch 搜索引擎的,方便开发和诊断的 GUI(可视化)工具。
1410 0
|
搜索推荐 API C++
|
自然语言处理 Java 索引