文档章节

Lucene 检索时的步骤

k
 kdy1994
发布于 01/24 17:40
字数 766
阅读 6
收藏 0

用户输入查询语句: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 小),找工作越有竞争力。人的价值在于不可替代性就是这个道理。

 

© 著作权归作者所有

共有 人打赏支持
k
粉丝 0
博文 74
码字总数 26348
作品 0
昌平
程序员
私信 提问
全文检索:Apache Lucene框架入门实例

一 简介 Lucene属于Apache开源项目的一部分,是一个开源的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析...

pangfc
2018/06/26
0
0
Lucene笔记系列(1)——Lucene的理论基础之全文检索

本系列开始学习Lucene。 在我们处理的数据当中,分为三类数据: 结构化数据:具有固定格式或限定长度的数据,如我们的数据库中的数据 非结构化数据:无固定格式、无固定长度的数据,如我们w...

HappyBKs
2015/08/18
0
0
关于jforum2.1.6的全文检索问题(采用lucene实现)

在WEB开发板块中,有谈论到jforum2.1.6的中文问题,也涉及到了全文检索,这里采用lucene来实现全文检索。 具体操作方案为: 1、原来的检索是通过net.jforum.dao.generic.GenericSearchDAO来实...

cto-jp
2012/09/24
0
0
Hibernate Search JPA + Lucene 简单应用实例

一。假设现在有这么一个应用场景。数据库里存放了大量文章,我们想要通过输入关键字,从数据库中检索出相关的文章。 1.建立Article Entity: 2.建立索引: 3.检索关键字: 以上三个步骤构建了...

6pker
2015/05/27
0
2
lucene学习笔记一(初始lucene)

lucene简介: 摘自百科:Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了...

吕兵阳
2015/10/03
730
4

没有更多内容

加载失败,请刷新页面

加载更多

RabbitMQ入门

RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue)协议的开源实现。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面都非常的优秀。是当前最主流的消息中间...

watermelon11
今天
14
0
今天的学习

自动加载:方法一 function __autoload( $className ){在这里,完成加载B这个类文件的工作。}class A{} //这是一个类$a1 = new A(); //这里没有自动加载的发生,因为A这个类...

墨冥
今天
2
0
印刷工艺步骤

印刷厂从收到订单到交付整个流程,一般涉及到以下步骤 1.设计(经过软件如cdr,psd,ai等等设计需要印刷的名片,宣传单,画册等物料); 2.排版拼版(在电脑软件这区域完成); 3.出版、出硫...

focusone
昨天
2
0
virtualbox中安装ubuntu

virtualbox+ubuntu 安装virtualbox,当前版本是6.0.4 下载ubuntu安装盘,建议lubuntu,链接是http://mirrors.ustc.edu.cn/ubuntu-cdimage/lubuntu/releases/18.04.2/release/lubuntu-18.04.......

chuqq
昨天
5
0
exists 谓词的子查询

https://blog.csdn.net/qq_19782019/article/details/78730882

仟昭
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部