Lucene架构

摘要:
首先,查看Lucene的总体架构设计图(见下图)。首先,看看上层应用程序。首先,信息收集过程。文件系统、数据库、万维网和手动输入的文件可以用作信息收集的对象,也是要搜索的文档的来源。网络爬虫通常用于收集万维网上的信息。在信息收集之后,Lucene级别有两项任务:索引文档和搜索文档。索引文档的过程完成了从原始文档到反向索引的构建过程,搜索文档用于处理用户查询。

      先整体上看一下Lucene的架构设计图(见下图),先看上层应用,首先是信息采集的过程,文件系统、数据库、万维网以及手工输入的文件都可以作为信息采集的对象,也是要搜索的文档的来源,采集万维网上的信息一般使用网络爬虫。完成信息采集之后到Lucene层面有两大任务:索引文档和搜索文档,索引文档的过程完成由原始文档到倒排索引的构建过程,搜索文档用以处理用户查询。应用层的第三部分就是用户接口,用户输入查询关键字,Lucen完成文档搜索任务,经过分词、匹配、评分、排序等一系列过程之后返回用户想要的文档。

Lucene架构第1张Lucene架构第2张

       一次完整的搜索从用户输入要查询的关键词开始到系统根据用户输入的关键字返回相关信息。一次检索大致可分为4步:

     第一步:查询分析

     正常情况下用户输入正确的查询,例如输入“python”这个关键词,用户输入正确完成一次搜索,但是搜索需求通常都是全开放的,任何的用户需求都是有可能的,很大一部分还是非常口语化和个性化的,有时候还会存在拼写错误,假如不小心把”python“达成“pythno”,这个时候就需要用自然语言处理技术来做拼写纠错等处理,以正确理解用户需求。

     第二步:分词技术

    这一步利用自然语言处理技术将用户输入的查询语句进行分词,如标准分词会把“lucene,全文检索框架”分成lucene|全|文|检|索|框|架,空格分词会分成:lucene,|全文检索框架|,二分法会变成:lucene|全文|文检|检索|索框|框架|,还有简单分词等多种分词方法。

     第三步:关键字检索

    提交关键词后在倒排索引库中进行匹配,倒排索引就是关键词和文档之间等对应关系,就像给文档贴上标签。比如文档集中含有lucene关键词的有文档1,文档6,文档9,含有全文检索的有文档1、文档6,那么做与运算,同时含有lucene和全文检索的文档的就是1和6,在实际的搜索中会有更复杂的文档匹配模型。

     第四步:搜索排序

     对多个相关文档进行相关度计算、排序,返回给用户检索结果。

     

免责声明:文章转载自《Lucene架构》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Unity3D 碰撞关系表 (转)【C#食谱】【面食】菜单4:List和LinkedList性能比较下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql查询语句中使用星号真的慢的要死?

前言 之所以写这篇文章,是源于以前看过的关于sql语句优化的帖子,里面明确提到了在sql语句中不要使用 * 来做查询,就像下面的规则中说的 2、尽量避免使用select *,返回无用的字段会降低查询效率。如下: SELECT * FROM t 优化方式:使用具体的字段代替*,只返回使用到的字段。 但是中国有句姥话叫“尽信书不如无书”,难道在sql...

Oracle内部错误:ORA00600:[6033]一例

一套HP-UX上的9.2.0.8系统,某条查询语句执行时出现ORA-00600: internal error code, arguments: [6033], [], [], [], [], [], [], []内部错误,错误trace信息如下: *** SESSION ID:(583.18281) 2010-12-20 22:49:01.364 ***...

数据库(二)—— MySQL索引优化

MySQL的索引优化 目录 MySQL的索引优化 一、MySQL 5.7的初始化配置 二、MySQL配置文件 1、配置 2、配置文件作用 三、多实例 1、创建相关的目录 2、创建实例的配置文件 3、初始化 4、授权 5、启动实例 6、查看启动状况 7、测试 8、配置启动脚本 9、开机自启 10、设定mysql密码 11、忘记密码 四、数...

Solr学习02:搭建Solr环境

一、安装虚拟机   Solr 必须运行在Java1.6 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可,但如果需要扩展功能或编译源码则需要下载JDK 来完成。可以通过下面的地址下载所需JDK 或JRE :   OpenJDK ( http://java.sun.com/j2se/downloads.html )  Sun (h...

seq2seq聊天模型(一)

原创文章,转载请注明出处 最近完成了sqe2seq聊天模型,磕磕碰碰的遇到不少问题,最终总算是做出来了,并符合自己的预期结果。 本文目的 利用流程图,从理论方面,回顾,总结seq2seq模型, seq2seq概念 你给模型一段输入,它返回一段输出! 可以用在这些情景,聊天模型、翻译、看图说话、主旨提取等等涉及自然语言的层面,用途较广泛 例如: 输入"今天...

SQL SERVER数据库维护与重建索引

第一步:查看是否需要维护,查看扫描密度/Scan Density是否为100% declare @table_id int set @table_id=object_id('表名') dbcc showcontig(@table_id) 第二步:重构SQL Server数据库表索引 dbcc dbreindex('表名',pk_索引名,100) 重做...