专栏首页eguid开源技术分享lucene全文搜索之一:lucene的主要功能和基本结构(基于lucene5.5.3)

lucene全文搜索之一:lucene的主要功能和基本结构(基于lucene5.5.3)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/eguid_1/article/details/53086068

前言:lucene并不是像solr或elastic那样提供现成的、直接部署可用的系统,而是一套jar包,提供了一些常见语言分词、构建索引和创建搜索器等等功能的API,我们常用到的也就是分词器、索引目录管理、索引器以及几种搜索器。

这里我们会从lucene结构到实现逐一进行分析讲解

注意:基于lucene5.5.3,(只支持5.x版本,不支持5.x以下和6.x以上的lucene版本)

jar包集合下载地址:http://download.csdn.net/detail/eguid_1/9677589

一、lucene的基本结构

lucene 的主要功能由索引器索引搜索器构成,所有的外围功能都为构建索引和搜索两个功能提供服务

1、索引器构成

搜索器由分词器索引目录、索引文档构成

lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录)基于lucene5.5.2

(1)分词器构成

内置分词器:Lucene-analyzers-common-5.5.2.jar提供了多国语言的分词器

常用中文分词器:IKAnalyzer和庖丁

使用IK Analyzer中文分词器(修改IK Analyzer源码使其支持lucene5.5.x)

(2)索引目录构成

索引目录分为:文件目录内存虚拟目录

补充:在大量实际应用中百万级别的数据量下文件目录和内存虚拟目录索引在性能上并没有太大差异

(3)索引文档

索引文档由多个索引字段构成,用于保存要索引的字段;

索引字段由字段名和字段内容以及权重值组成。

lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.2

(补充:文章或者其他内容用于构建索引字段,并赋予权重值,再将构建好的索引字段保存到索引文档,就可以用来搜索了,当然我们也可以将索引文档保存到索引目录,这样我们就可以使用搜索器来搜索这个索引目录中的索引文档)

2、索引搜索器构成

索引搜索器由索引目录创建,所以实际上可以把索引保存到不同的索引目录,在搜索时通过不同的索引目录进行分类搜索;

索引搜索器需要搜索器进行搜索结果(可以根据排序或者根据匹配值或权重值对搜索结果进行调整);

部分搜索器需要依赖分词器进行分词。

lucene全文搜索之四:创建索引搜索器、6种文档搜索器实现以及搜索结果分析(结合IKAnalyzer分词器的搜索器)基于lucene5.5.2

搜索器分为六种

(1)单词搜索

搜索单个关键字

(2)前缀搜索

按照对应的前缀进行搜索

(3)范围搜索

搜索指定一个范围

(4)语句模糊搜索

使用内置分词器或中文分词器对查询语句进行分词并根据分词结果模糊搜索

(5)条件模糊搜索

在语句模糊查询基础上加上OR或者AND进行条件搜索

补充:只支持OR、AND两种条件搜索

(6)组合搜索

可以组合上面几种搜索器进行混合搜索

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • APP端测试系列(3)——客户端安全

    在APP测试的第三部分之前插播一个新闻《自学黑客薅羊毛,薅出玫瑰金手镯》,一个通过测试APP客户端,绕过验证注册二十万账号,从而获利六万余元最终喜获金手镯的...

    Jayway
  • Gradle 如何配置将编译的 JAR 发布到 Archiva 中

    在这里,你需要指定 archiva 的用户名和密码,这个用户能够具有 archiva 的相关权限。

    HoneyMoose
  • JAVA | Spring + quartz 实现定时任务

    很久不见,因为忙着泡妞,断更了一个月,实在是罪过。废话不多说,最近在工作中遇到了使用 quartz 实现定时任务的需求。写出来分享给大家,权当笔记。

    一个优秀的废人
  • 谈谈上线变更

    为什么今天要讨论这个话题呢?因为我最近上线时就犯了一个错误,想把这事和后来的复盘分享给大家,事故的过程如果没看懂可以直接往下拉看复盘。

    公众号_松花皮蛋的黑板报
  • 老王,怎么完整SQL的显示日志,而不是???...

    在常规项目的开发中可能最容易出问题的地方就在于对数据库的处理了,在大部分的环境下,我们对数据库的操作都是使用流行的框架,比如 Hibernate 、 MyBat...

    用户5224393
  • Springboot总结,核心功能,优缺点

    Spring boot 可以以jar包形式独立运行,运行一个Spring Boot项目只需要通过java -jar xx.jar来运行。

    一个优秀的废人
  • 将jar包发布到maven的中央仓库细节整理

    在学习springboot框架的时候,会引入各种各样的starter依赖,照着教程尝试写了个demo-spring-boot-stater,可以理解为一个组件,...

    陈灬大灬海
  • 日志文件过大优化

    声明: 如果您有更好的技术与作者分享,或者商业合作; 请访问作者个人网站 http://www.esqabc.com/view/message.html ...

    Mr.Vv
  • Java工程师学习指南(初级篇)

    最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写...

    黄小斜
  • Java工程师学习指南(入门篇)

    最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写...

    黄小斜

扫码关注云+社区

领取腾讯云代金券