Lucene 检索时的步骤

用户输入查询语句:lucene AND learned NOT hadoop

搜索主要分为以下几步

第一步、对查询语句进行词法分析,语法分析,及语言处理

  • 词法分析主要用来识别单词和关键字
  • 语法分析主要是根据查询语句的语法规则来形成一课语法树

  • 语言处理同检索过程中的语言处理几户相同,区别在于将词learned变回原形learn

第二步,搜索索引,得到符合语法树的文档

  • 在反向表中,分别找出lucene,learn,hadoop的文档链表
  • 对lucene和learn的链表进行合并操作,得到包含lucene又包含learn的文档链表
  • 将得到的链表与包含hadoop的文档进行差操作,去除hadoop的文档,从而得到了包含lucene又包含learn而且不包含hadoop的文档链表

第三步、根据得到的文档和查询语句相关性,对结果进行排序

  • 找出词(Term)对文档的重要性的过程称为计算词的权重(Term weight)的过程。计算词的权重(term weight)有两个参数,第一个是词(Term),第二个是文档(Document)。词的权重(Term weight)表示此词(Term)在此文档中的重要程度,越重要的词(Term)有越大的权重(Term weight),因而在计算文档之间的相关性中将发挥更大的作用。判断词(Term)之间的关系从而得到文档相关性的过程应用一种叫做向量空间模型的算法(Vector Space Model)。

计算权重(Term weight)的过程。

影响一个词(Term)在一篇文档中的重要性主要有两个因素:

  • Term Frequency (tf):即此Term 在此文档中出现了多少次。tf 越大说明越重要。
  • Document Frequency (df):即有多少文档包含次Term。df 越大说明越不重要。

词在文档中出现的次数越多,说明这个词越重要,在本文档中出现的次数很多,说明本文档主要就是讲这方面的事。

反而有越多的文档包含此词(Term), 说明此词(Term)太普通,不足以区分这些文档,因而重要性越低。

这也如我们程序员所学的技术,对于程序员本身来说,这项技术掌握越深越好(掌握越深说明花时间看的越多,tf 越大),找工作时越有竞争力。然而对于所有程序员来说,这项技术懂得的人越少越好(懂得的人少df 小),找工作越有竞争力。人的价值在于不可替代性就是这个道理。

 

转载于:https://my.oschina.net/kdy1994/blog/3005549

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值