lucene全文检索基础

标签: lucene 全文检索
1942人阅读 评论(1) 收藏 举报
分类:

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

1.信息检索整体流程

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

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

2.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个最相似的给用户.

查看评论

从Lucene到Elasticsearch全文检索实战读书笔记(一)

分词算法:中文分词方法:词典匹配分词法:正向最大匹配算法tf-idf:tf(term frequency) = 单词在该文档中出现次数 / 文档中总的单词数df(document frequency)...
  • yan_wenliang
  • yan_wenliang
  • 2018-03-15 19:18:08
  • 79

从Lucene到Elasticsearch

Lucene的总体架构:     文档:索引与搜索的主要数据载体,它包含一个或多个字段,存放将要写入索引或将索引搜索出来的数据。     字段:文档的一个片段,它包括两个部分:字段的名称和内容。 ...
  • qq_17864929
  • qq_17864929
  • 2017-09-14 10:32:47
  • 610

Elasticsearch 5.4新闻搜索项目实战

-
  • 2017年08月13日 13:47

Elasticsearch 5.1.1搜索高亮及Java API实现

5.1.1的搜索高亮和2.X有所变化,但是变化不大。下面分四步来介绍:创建索引(设置mapping/IK分词)、索引文档、REST API的搜索高亮、JAVA API的搜索高亮。 注:从这篇博客开始...
  • napoay
  • napoay
  • 2016-12-28 17:39:01
  • 15075

Elasticsearch整合Mysql新闻搜索

Elasticsearch整合Mysql,实现数据导入、全文搜索、搜索高亮、结果分页
  • napoay
  • napoay
  • 2017-02-27 17:19:14
  • 2861

elasticsearch的实现全文检索

elasticsearch一个准实时的搜索引擎,基于lucene构建,它的主要强项还是在全文检索方面。工作中还是使用到了这部分功能,这里做一个简单的总结,可以使初次使用的人很快的配置和使用。 一、全...
  • iloveyin
  • iloveyin
  • 2015-09-09 14:43:00
  • 1106

Elasticsearch全文检索系统实现深入详解

题记学习ES的童鞋,都有一个开发一个类似百度的搜索引擎的想法。当然功能不一定是百度、360、谷歌传统的搜索引擎那么强大。但是,能实现基本的全文检索、指定类型的检索、评分高低优先级排序等等。那么问题来了...
  • wojiushiwo987
  • wojiushiwo987
  • 2017-07-23 17:05:31
  • 3420

lucene4.6.0 jar包

  • 2017年10月10日 16:23
  • 7.38MB
  • 下载

【Lucene】Apache Lucene全文检索引擎架构之入门实战

Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的...
  • eson_15
  • eson_15
  • 2016-07-07 19:23:21
  • 8961

ElasticSearch实战-入门

参考blog : http://www.cnblogs.com/smartloli/p/4701642.htmlREVIEW
  • xuanfengling
  • xuanfengling
  • 2016-06-03 14:41:07
  • 268
    StackOverFlow
    http://stackoverflow.com/users/6526424
    统计
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 101万+
    积分: 9702
    排名: 2295
    博客专栏
    最新评论