Lucene实现全文检索的流程

本文内容来自恩师

以下正文...

Lucene

1.创建索引

  1) 获得文档

    原始文档:要基于哪些数据来进行搜索,那这些数据就是原始文档.

    搜索引擎:使用爬虫技术获得原始文档.

    站内搜索:使用数据库中的数据

    本机:直接使用io流读取本地磁盘上的数据

  2) 构建文档对象

    对应每个原始文档创建一个Document对象

    每一个document对象中包含多个域(field)

    域中保存的就是原始文档数据

      域的名称

      域的值

    每个文档都有一个唯一的编号,就是文档id

   3)分析文档

    就是分词的过程

      (1)根据空格进行字符串拆分,得到一个单词列表

      (2)把单词统一换成小写

      (3)去除标点符号

      (4)去除停用词(即没有意义的词)

      每个关键词都封装到一个Term对象中

        Term对象中包含两部分内容

          关键词本身所在的域

          关键词本身

      不同域中拆分出来的相同的关键词是不同的Term.

    4) 创建索引

      基于关键词列表创建一个索引.保存到索引库中.

        索引库中包含的内容:  

            索引

            document对象

            关键词和文档的对应关系

      通过词语找文档,这种索引的结构叫做倒排索引文档.

2.查询索引

    1) 用户查询接口

      用户输入查询条件的地方

      例:百度的搜索框

    2) 把关键词封装成一个查询对象

      要查询的域

      要搜索的关键字

    3) 执行查询

      根据要查询的关键词到对应的域上进行的搜索.

      找到关键词,根据关键词找到对应的文档  

    4) 渲染结果

      根据文档的id找到文档对象

      对关键词进行高亮显示

      分页处理

      最终展示给用户看

原文地址:https://www.cnblogs.com/xiaoxiaobaizht/p/10923575.html

时间: 2024-11-10 07:10:32

Lucene实现全文检索的流程的相关文章

Lucene .NET 全文检索

近期做项目中有用到过Lucene,那个模块是由一位前端大神负责的,空闲时间我也做了个关于Lucene做全文检索的Demo,记录下来,方便以后学习. 关于Lucene的原理,网上有长篇大论的文章,有兴趣的话可以去阅读,再次我就直奔主题,在代码中分析其原理. 1.创建索引(此处我用的是盘古分词) 注:在后台代码的第一行上加上 #define notes这样一行代码,目的是可以用外侧代码的#if,作用嘛 用过之后就很明白了,嘿嘿. #region 创建索引 void CreateIndex(objec

lucene解决全文检索word2003,word2007的办法

在上一篇文章中 ,lucene只能全文检索word2003,无法检索2007.为解决此问题,找到了如下方法 POI 读取word (word 2003 和 word 2007) 最近在给客户做系统的时候,用户提出需求,要能够导入 word 文件,现在 microsoft word 有好几个版本 97.2003.2007的,这三个版本存储数据的格式上都有相当大的差别,而现在 97 基本上已经退出市场,几乎没有人用这个版本了, 所以在我们的系统中只考虑 2003 版本和 2007 版本的,因为我们只

探索Lucene.Net全文检索

在CSDN,博客园找了一番Lucene.Net相关资料后,最后发现还是没有自己想要的,毕竟lucene.net版本一直在变,这里我用的是Lucene.Net 3.0的版本,demo是在http://www.dotlucene.net/ 网站里面找到的.方法很完善,API也比较全面,http://www.dotlucene.net/30648/lucene-net-api-search-demo. 不过demo里面讲解是检索文件内容服务,而我想要的是检索数据内容服务,我就在它的基础上改了一番. 过

黑马_10 Lucene:全文检索

10 Lucene:01.全文检索基本介绍 原文地址:https://www.cnblogs.com/MarlonKang/p/11570273.html

lucene&solr全文检索_3查询索引

创建完索引之后,我们需要查询. 百度的查询接口及结果如图所示: 具体步骤已经在上个博客中写到,直接上代码:(由于是一个完整的程序,我把创建索引的代码也post上) package come.me.lucene; import static org.junit.jupiter.api.Assertions.*; import java.io.File; import org.apache.commons.io.FileUtils; import org.apache.lucene.analysis

lucene&solr全文检索_4改进

在之前的程序中我们发现分词不太准确,因此我们可以使用支持中文分词. 分析器的执行过程: 从一个reader字符流开始,创建一个基于reader的tokenizer分词器,经过三个tokenfilter(第一个大写变小写,第二个用回车替换空格,去掉不需要的a,the,and,逗号等)生成tokens.要看分析器的分析效果只需要看tokenstream中的内容就可以了,每个分析器都有一个方法tokenstream,返回一个tokenstream对象. lucene自带中文分析器: standardA

lucene&solr全文检索_5索引的维护

增加新内容的时候,或者删除的时候我们需要对索引进行增删改查来进行索引的维护. 先上代码: package come.me.lucene; //索引维护 import java.io.File; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; impo

lucene&solr全文检索_7solr后台界面的介绍

接着上个博客,用浏览器打开solr之后的界面: Dashboard:仪表盘,显示了该solr实例开始运行的时间.版本.系统资源,jvm等信息 Logging:solr的运行日志,如果出现问题会告诉你什么问题. Core Admin:solr core 的管理界面.solr core是solr 的一个独立运行实例单位,他可以对外提供索引和搜索服务,一个solr工程可以运行多个solrcore,一个core对应一个索引目录. 可以手动添加solr core: 步骤: 1.复制collection1改

全文检索技术---Lucene

1       Lucene介绍 1.1   什么是Lucene Lucene是apache下的一个开源的全文检索引擎工具包.它为软件开发人员提供一个简单易用的工具包(类库),以方便的在目标系统中实现全文检索的功能. 1.2   全文检索的应用场景 1.2.1  搜索引擎 ©注意: Lucene和搜索引擎是不同的,Lucene是一套用java或其它语言写的全文检索的工具包.它为应用程序提供了很多个api接口去调用,可以简单理解为是一套实现全文检索的类库.搜索引擎是一个全文检索系统,它是一个单独运