曙海教育集团
全国报名免费热线:4008699035 微信:shuhaipeixun
或15921673576(微信同号) QQ:1299983702
首页 课程表 在线聊 报名 讲师 品牌 QQ聊 活动 就业
 
 
     班级规模及环境--热线:4008699035 手机:15921673576( 微信同号)
         每期人数限3到5人。
     上课时间和地点
  上课地点:【上海】:同济大学(沪西)/新城金郡商务楼(11号线白银路站) 【深圳分部】:电影大厦(地铁一号线大剧院站)/深圳大学成教院 【北京分部】:北京中山学院/福鑫大楼 【南京分部】:金港大厦(和燕路) 【武汉分部】:佳源大厦(高新二路) 【成都分部】:领馆区1号(中和大道) 【沈阳分部】:沈阳理工大学/六宅臻品 【郑州分部】:郑州大学/锦华大厦 【石家庄分部】:河北科技大学/瑞景大厦 【广州分部】:广粮大厦 【西安分部】:协同大厦
最近开课时间(周末班/连续班/晚班):2020年3月16日
     实验设备
       ☆资深工程师授课
        
        ☆注重质量 ☆边讲边练

        ☆合格学员免费推荐工作
        ★实验设备请点击这儿查看★
     质量保障
 

        1、培训过程中,如有部分内容理解不透或消化不好,可免费在以后培训班中重听;
        2、培训结束后,授课老师留给学员联系方式,保障培训效果,免费提供课后技术支持。
        3、培训合格学员可享受免费推荐就业机会。

 
课程大纲
   
 


一.概述:

1.1 什么是Lucene4

1.2 全文检索系统的结构

1.3 Lucene4能做什么

1.4 为什么使用Lucene4

1.5 Lucene4只关注文本的索引和搜索

1.6 索引库结构—倒排序索引

1.7 基于Lucene4的搜索程序例子

1.8 Nutch

Nutch是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。

1.9 开源搜索引擎列表

JXTA Search是一个分布式的搜索系统.设计用在点对点的网络与网站上.

Carrot2是一个开源搜索结果分类引擎。它能够自动把搜索结果组织成一些专题分类。

 MG4J可以让你为大量的文档集合构建一个被压缩的全文本索引,通过使内插编码(interpolative coding)技术.

1.10 全球商用搜索市场

在全球商用搜索市场上,Autonomy是老大!Autonomy的市值不足Google的零头,而Google在这一市场的份额也不足Autonomy份额的零头.

1.11 几种常见的基于Lucene4的开源搜索解决方案对比

Solr Cloud;Solandra = Solr + Cassandra ;HBasene(Lucene+HBase)

1.12 Lucene4倒排索引原理

1.13 Lucene4基本开发环境配置-样例项目概览

1.14 快速浏览demo

 

二、Lucene系统架构 

2.1 Lucene4系统结构

2.2 Lucene4包结构功能表 

2.3 Lucene4的主要逻辑图 

2.3.1 查询逻辑

2.3.2 入库逻辑

2.4 理解核心索引类 

2.4.1 IndexWriter

2.4.2 Directory

2.4.3 Analyzer

 2.4.4 Document

2.4.5 Field

2.5 静态内部类

Field.Store ?表示Field的存储方式

2.6 关于Field的重要说明

org.apache.lucene.document.StringField   A field that is indexed but not tokenized: the entire String value is indexed as a single token.

org.apache.lucene.document.TextField      A field that is indexed and tokenized, without term vectors. For example this would be used on a 'body' field, that contains the bulk of a document's text.

org.apache.lucene.document.BinaryDocValuesField   The values are stored directly with no sharing, which is a good fit when the fields don't share (many) values, such as a title field. If values may be shared and sorted it's better to use?SortedDocValuesField.?

2.7 项目实战动手演练

 

三、 Lucene索引里有什么

什么是索引 index

Lucene索引的术语定义

倒排索引(inverted indexing)

Fields的种类

片断(segments)

文档编号(document numbers)

索引结构概述

Lucene src自带样例代码

Lucene索引的目录结构

 

四、Lucene索引深入

4.1 Lucene4索引的目录结构

4.2 索引文件后缀名说明:segments.gen, segments_N;write.lock;.si;.cfs, .cfe ;.fnm;dex .fdx;.fdt;.tim;.tip;.doc;.pos;.pay;.nvd, .nvm;.dvd, .dvm;.tvx;.tvd;.tvf;.del

4.3 当前版本索引的限制:Lucene的当前实现索引中使用Java语言中的 int 对term词典计数。所以单个索引片段文件中词典最大的数目为: ~2.1 billion  (约21亿)  X  索引片段文件最大个数(128)

故 能索引的词典最大数目为: ~274 billion (约2740亿)

这个限制不是索引文件格式造成的,是采用当前java实现版本造成的。(This is technically not a limitation of the index file format, just of Lucene's current implementation.)

同理:也是使用int 对document文档源计数的。并且索引文件格式也是采用的?Int32?在硬盘上存储document文档号的。这个限制即是实现版本也是索引文件格式的限制,后续可能会改为?UInt64?或?Vint 更好就没限制了。

4.4 索引文件可放的位置

内存,硬盘

 

五、 Lucene索引深入优化

5.1 索引的合并

实际代码实战

5.2 索引优化的部分技巧

重用Document和Field实例

使用按照内存消耗Flush代替根据文档数量Flush(4.3版缺省)

当使用 fuzzy 查询时设置一个较小的比较长度 (prefixLength) 

考虑使用filters 

等等

 

六、Lucene索引搜索及实战

6.1 理解核心搜索类 

6.2 IndexSearcher

6.2.1 基本Search方法

6.2.2 代码实战

 

6.3 Term 

6.3.1 TermQuery 

6.3.2 Hits 返回的命中结果

6.3.3 关键词搜索的大致过程

 

6.4 Query 

6.4.1 BooleanQuery布尔搜索

使用场景说明及代码实战

6.4.2   TermRangeQuery范围搜索

使用场景说明及代码实战

6.4.3   NumericRangeQuery范围搜索

 使用场景说明及代码实战

6.4.4   PrefixQuery 前缀搜索

使用场景说明及代码实战

6.4.5   PhraseQuery短语搜索

使用场景说明及代码实战

6.4.6   MultiPhraseQuery多短语搜索

使用场景说明及代码实战

6.4.7   FuzzyQuery模糊搜索

使用场景说明及代码实战

6.4.8   WildcardQuery通配符搜索

使用场景说明及代码实战

6.4.9   RegexpQuery正则表达式搜索

使用场景说明及代码实战

6.4.10   正则表达式语法

深入介绍:正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。模式描述在搜索文本时要匹配的一个或多个字符串。/^\s*$/ 匹配空行。  /\d{2} \d{-5}/ 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。

/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ 匹配 HTML 标记。

等等详细语法指导

6.4.11 SpanQuery跨度搜索

使用场景说明及代码实战

 

十二、Lucene搜索深入实战进阶

QueryParser语法

一、Terms,Fields

一般来说,创建索引的分析器和查询的分析器最好保持一致(当然也有特殊情况,比如单字索引,分词组合查询),所以选择一个不会干扰查询词的分析器是很重要的。

代码实战

 

二、Term操作符   

AND,OR,分组,特殊字符及: QueryParser.escape(q)? 可去除q中含有查询关键字的字符!如:* ,? 等

代码实战

 

三、模糊查询,范围查询

Lucene支持在Term中使用通配符来支持模糊查询。

范围查询是按字典查询,非“org.apache.lucene.search.NumericRangeQuery”

代码实战

 

四、优先级

Lucene支持给不同的查询词设置不同的权重。设置权重使用“^”符号,将“^”放于查询词的尾部,同时跟上权重值,权重因子越大,该词越重要。设置权重允许你通过给不同的查询词设置不同的权重来影响文档的相关性。

代码实战

 

十五、Lucene高级进阶

在索引中清除Document

maxDoc()和numDocs()

更新索引中的Document 

分页搜索的实现

 

十八、 Lucene排序

Lucene默认按照文档得分进行排序

explain方法

加分

sort排序

 

十九、Lucene过滤

内置的过滤器

org.apache.lucene.search.Filter 提供了几个内置的过滤器

Direct Known Subclasses: 

CachingWrapperFilter,DocTermOrdsRangeFilter,?FieldCacheRangeFilter,FieldCacheTermsFilter,?FieldValueFilter,?MultiTermQueryWrapperFilter,QueryWrapperFilter

FieldCacheRangeFilter

 

二十、Lucene分词器 

20.1 英文分析器比较   SimpleAnalyzer; StopAnalyzer; StandardAnalyzer xy&z?mail?is?-?xyz@hello.com ,中文 SimpleAnalyzer 空格及各种符号分割:xy   ,    z   ,   mail   ,   is   ,   xyz   ,   hello   ,  com ,   中文 StopAnalyzer 

空格及各种符号分割,去掉停止词,停止词包括?is,are,in,on,the等无实际意义的词 :xy    ,   z   ,    mail    ,     xyz    ,    hello   ,    com  ,   中文  StandardAnalyzer

混合分割,包括了去掉停止词,支持汉语 :xy ,  z  ,  mail  ,  xyz   ,  hello.com   ,   中   ,   文

代码实战

 

20.2 中文分词器IK Analyzer 2012介绍 

在2012版本中,IK实现了简单的分词歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化。 

 

20.3 IK Analyzer 2012特性

采用了特有的“正向迭代最细粒度切分算法“,支持细粒度和智能分词两种切分模式

2012版本的智能分词模式支持简单的分词排歧义处理和数量词合并输出。 

采用了多子处理器分析模式,支持:英文字母、数字、中文词汇等分词处理,兼容韩文、日文字符 

优化的词典存储,更小的内存占用。支持用户词典扩展定义。特别的,在2012版本,词典支持中文,英文,数字混合词语。

 

20.4 IK Analyzer 2012分词效果示例

IK Analyzer 2012版本支持 细粒度切分 和 智能切分,以下是两种切分方式的演示样例。 

代码实战

 

20.5 IK Analyzer 2012下载包内容

环境搭建,代码实战

自定义扩展词典实战

IKAnalyzer.cfg.xml(分词器扩展配置文件) 

stopword.dic(停止词典) 

ext.dic(自定义扩展词典词典) 

常见UTF-8问题演示及解决,代码实战

20.6 高亮工具包

lucene-highlighter-4.3.0.jar

实现类似baidu搜索高亮显示关键词,及上下文的功能

代码实战

 

二十三、Lucene项目实战   9课时

某大型企业信息化系统中 某某文档中心管理系统

23.1 实现上传并解析全文检索各种文件类型

23.1.1 上传并解析各种格式的内容文档:(.txt,.pdf,.doc,.xls,.docx,.xlsx,.htm……)

23.1.2 Apache Tika – 文档解析工具包

org.apache.tika.parser.AutoDetectParser

23.1.3 文件上传工具包使用实战

org.apache.commons.fileupload

23.2 实现代码功能:

23.2.1 文件上传,

org.apache.commons.fileupload.servlet

实现文件上传并建立索引

23.2.2 文件下载,

实现文件点击下载

23.2.3 文件管理:文件删除,

目录管理,目录的增加、修改、删除

23.2.4 全文检索:

实现全文检索分页,

类似baidu搜索的分页实现

全文检索上下文实现摘要

org.apache.Lucene4.search.highlight.*

实现类似baidu搜索高亮显示关键词,及上下文的功能

 

 

        Troubleshooting Java Applications
                Classpath Errors
                Class Loaders
                Common Java Errors
        Troubleshooting Servers
                Native Libraries
                Threading Architecture
                Work Managers
                Deadlocks
                Overload Protection
                Deployment Problems
        Troubleshooting JDBC
                Data Source Management
                Diagnostics
                Debug Flags
                Connectivity Problems
                Connection Leaks
                Database Availability
        Troubleshooting JMS
                Management
                MBean Hierarchy
                Message Logging
                Diagnostics
                Debug Flags
                Overload Protection
                Lost Messages
                Duplicate Messages
        Troubleshooting Security
                SSL Internals
                Keystore Management
                Debug Flags
                Common SSL Problems
                Certificate Validation
                Embedded LDAP
                Security Audit
                Common LDAP Problems
        Troubleshooting Node Manager
                Internals
                Security
                Common Issues
        Troubleshooting Clusters
                Plug-in Configuration
                OHS Overview
                Plug-in Connectivity
                Plug-in Diagnostics
                Unicast Communication
                Replication Debug Flags
                Typical Replication Issues
热线:4008699035 手机:15921673576( 微信同号)
备案号:备案号:沪ICP备08026168号-1 .(2024年07月24日)......................
友情链接:Cadence培训 ICEPAK培训 EMC培训 电磁兼容培训 sas容培训 罗克韦尔PLC培训 欧姆龙PLC培训 PLC培训 三菱PLC培训 西门子PLC培训 dcs培训 横河dcs培训 艾默生培训 robot CAD培训 eplan培训 dcs培训 电路板设计培训 浙大dcs培训 PCB设计培训 adams培训 fluent培训系列课程 培训机构课程短期培训系列课程培训机构 长期课程列表实践课程高级课程学校培训机构周末班培训 南京 NS3培训 OpenGL培训 FPGA培训 PCIE培训 MTK培训 Cortex训 Arduino培训 单片机培训 EMC培训 信号完整性培训 电源设计培训 电机控制培训 LabVIEW培训 OPENCV培训 集成电路培训 UVM验证培训 VxWorks培训 CST培训 PLC培训 Python培训 ANSYS培训 VB语言培训 HFSS培训 SAS培训 Ansys培训 短期培训系列课程培训机构 长期课程列表实践课程高级课程学校培训机构周末班 端海 教育 企业 学院 培训课程 系列班 长期课程列表实践课程高级课程学校培训机构周末班 短期培训系列课程培训机构 端海教育企业学院培训课程 系列班