lucene全文检索基础

栏目: 编程工具 · 发布时间: 7年前

内容简介:lucene全文检索基础

全文检索是一种将文件中所有文本与检索项匹配的文字资料检索方法.比如用户在n个小说文档中检索某个关键词,那么所有包含该关键词的文档都返回给用户。那么应该从哪里入手去实现一个全文检索系统?相信大家都听说过apache的开源项目lucene,下面就从零开始揭开全文检索的面纱。

1.信息检索整体流程

一次完整的搜索从用户输入要查询的关键词开始,比如想查找lucene的相关学习资料,我们都会Google或百度中输入关键词,比如输入“lucene, 全文检索框架”,之后系统根据用户输入的关键词返回相关信息。一次检索大致可分为四步:

  • 第一步:输入关键词
  • 第二步:分词技术
    这一步利用自然语言处理技术将用户输入的查询语句进行分词,如标准分词会把“lucene, 全文检索框架”分成:lucene | 全 | 文 | 检 | 索 | 框 | 架 | ,空格分词会分成:lucene, | 全文检索框架 | ,二分法会分成:lucene | 全文 | 文检 | 检索 | 索框 | 框架 |,还有简单分词等多种分词方法.
  • 第三步:关键词检索
    提交关键词后在倒排索引库中进行匹配,倒排索引就是关键词key和文档之间的对应关系,就像给文档贴上标签。比如在检索库中含有lucene关键词的有文档1、文档6、文档9,含有全文检索的有文档1,文档6,那么做与运算,同时含有lucene和全文检索的文档就是1和6.
  • 第四步:
    对多个相关文档进行相关度计算、排序,返回给用户检索结果.

2.lucene架构

lucene全文检索基础

这张图很清楚的表现了lucene的工作原理:把文件系统、数据库、网页、手工输入的数据都集合起来,结构化、半结构化、非结构化数据整合在一起,建立成索引库。用户提交查询以后通过索引建设到文档,反馈给用户搜索结果.

3.文档、域、词元

文档:文档时lucene索引和搜索的基本单位.比如,一篇小说,一个word文档.

域:文档中的信息,比如小说标题、作者、简介等.

词元:对标题这个域进行分词,可以得到一个或多个词元.

4.词元权重计算

df:term frequency。 term在文档中出现的频率.tf越大,词元越重要.

tf:document frequecy。有多少文档包含此term,df越大词元越不重要.

词元权重计算公式: W(t,d)=tf(t,d)*log(n/df(t))

W(t,d):the weight of the term in document d

tf(t,d):the frequency of term t in document d

n:the number of documents

df(t):the number of documents that contain term t

5.余弦相似性

我们知道,两个向量的夹角越小,向量越相似,夹角为0时余弦值为1,方向相反时余弦值为-1.用户的输入通过分词形成用户查询向量V(q)={w1,w2,w3…wn},文档的多个词元构成文档向量D。通过计算文档向量和用户查询向量的相似性返回前N个最相似的给用户.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Vue.js前端开发

Vue.js前端开发

陈陆扬 / 人民邮电出版社 / 2017-2-1 / CNY 45.00

本书分为10章,包括简介、基础特性、指令、过滤器、过渡、组件、状态管理、常用插件、工程实例和Weex打包。本书从简单的单个实例和基础语法,到工程实例,将系统地讲述Vue.js在项目中的适用场景和具体操作。本书的特点在于案例详实,使读者体会到框架的优点和便捷之处,提升开发效率,最后能将Vue.js运用到实际项目中,避免纸上谈兵的尴尬。一起来看看 《Vue.js前端开发》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码