博客园 - 刘超觉先
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=685170
2018-03-06T12:47:20Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
feed.cnblogs.com
https://www.cnblogs.com/forfuture1978/p/3945755.html
Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析) - 刘超觉先
我们来看最复杂的部分,就是Term Dictionary和Term Index文件,Term Dictionary文件的后缀名为tim,Term Index文件的后缀名是tip,格式如图所示。Term Dictionary文件首先是一个Header,接下来是PostingsHeader,这两个的格式...
2014-08-29T13:14:00Z
2014-08-29T13:14:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】我们来看最复杂的部分,就是Term Dictionary和Term Index文件,Term Dictionary文件的后缀名为tim,Term Index文件的后缀名是tip,格式如图所示。Term Dictionary文件首先是一个Header,接下来是PostingsHeader,这两个的格式... <a href="https://www.cnblogs.com/forfuture1978/p/3945755.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/p/3944583.html
Lucene 4.X 倒排索引原理与实现: (2) 倒排表的格式设计 - 刘超觉先
1. 定长编码最容易想到的方式就是常用的普通二进制编码,每个数值占用的长度相同,都占用最大的数值所占用的位数,如图所示。这里有一个文档ID列表,254,507,756,1007,如果按照二进制定长编码,需要按照最大值1007所占用的位数10位进行编码,每个数字都占用10位。和词典的格式设计中顺序列表...
2014-08-29T03:40:00Z
2014-08-29T03:40:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】1. 定长编码最容易想到的方式就是常用的普通二进制编码,每个数值占用的长度相同,都占用最大的数值所占用的位数,如图所示。这里有一个文档ID列表,254,507,756,1007,如果按照二进制定长编码,需要按照最大值1007所占用的位数10位进行编码,每个数字都占用10位。和词典的格式设计中顺序列表... <a href="https://www.cnblogs.com/forfuture1978/p/3944583.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/p/3940965.html
Lucene 4.X 倒排索引原理与实现: (1) 词典的设计 - 刘超觉先
词典的格式设计词典中所保存的信息主要是三部分:Term字符串Term的统计信息,比如文档频率(Document Frequency)倒排表的位置信息其中Term字符串如何保存是一个很大的问题,根据上一章基本原理的表述中,我们知道,写入文件的Term是按照字典顺序排好序的,那么如何将这些排好序的Ter...
2014-08-28T02:23:00Z
2014-08-28T02:23:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】词典的格式设计词典中所保存的信息主要是三部分:Term字符串Term的统计信息,比如文档频率(Document Frequency)倒排表的位置信息其中Term字符串如何保存是一个很大的问题,根据上一章基本原理的表述中,我们知道,写入文件的Term是按照字典顺序排好序的,那么如何将这些排好序的Ter... <a href="https://www.cnblogs.com/forfuture1978/p/3940965.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/p/3373236.html
Notes for Linux Administration Handbook (1) : Booting and Shutting Down - 刘超觉先
Booting and Shutdown
2013-10-16T16:48:00Z
2013-10-16T16:48:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】Booting and Shutdown <a href="https://www.cnblogs.com/forfuture1978/p/3373236.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2011/09/10/2172918.html
lucene应用开发揭秘上线了 - 刘超觉先
Lucene应用开发揭秘华章培训网地址:http://www.hztraining.com/bbs/showtopic-1954.aspxChinaPub地址:http://product.china-pub.com/3502099&ref=xiliegoumai注意事项:由于本人是首次录制此类视频,不完美之处敬请谅解此系列课程主要包涵三大部分,一是搜索引擎的原理,二是lucene的深入解析及高级特性,三是实时搜索分布式搜索的框架解析及代码实现对于搜索引擎的原理部分,理论讲解比较多,有的部分内容较少,处于完整性的需要,还是作为单独的一节,可能视频时间较短,好在视频是分节销售的,本人已经
2011-09-09T16:01:00Z
2011-09-09T16:01:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】Lucene应用开发揭秘华章培训网地址:http://www.hztraining.com/bbs/showtopic-1954.aspxChinaPub地址:http://product.china-pub.com/3502099&ref=xiliegoumai注意事项:由于本人是首次录制此类视频,不完美之处敬请谅解此系列课程主要包涵三大部分,一是搜索引擎的原理,二是lucene的深入解析及高级特性,三是实时搜索分布式搜索的框架解析及代码实现对于搜索引擎的原理部分,理论讲解比较多,有的部分内容较少,处于完整性的需要,还是作为单独的一节,可能视频时间较短,好在视频是分节销售的,本人已经 <a href="https://www.cnblogs.com/forfuture1978/archive/2011/09/10/2172918.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/11/29/1891476.html
LinkedIn公司实现的实时搜索引擎Zoie - 刘超觉先
一、总体架构 Zoie是linkedin公司基于Lucene实现的实时搜索引擎系统,按照其官方wiki的描述为: http://snaprojects.jira.com/wiki/display/ZOIE/Overview Zoie is a realtime indexing and search system, and as such needs to have relatively close coupling between the logically distinct Indexing and Searching subsystems: as soon as a document m
2010-11-29T13:19:00Z
2010-11-29T13:19:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】一、总体架构 Zoie是linkedin公司基于Lucene实现的实时搜索引擎系统,按照其官方wiki的描述为: http://snaprojects.jira.com/wiki/display/ZOIE/Overview Zoie is a realtime indexing and search system, and as such needs to have relatively close coupling between the logically distinct Indexing and Searching subsystems: as soon as a document m <a href="https://www.cnblogs.com/forfuture1978/archive/2010/11/29/1891476.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/11/23/1884967.html
Hadoop学习总结之五:Hadoop的运行痕迹 - 刘超觉先
Hadoop 学习总结之一:HDFS简介Hadoop学习总结之二:HDFS读写过程解析Hadoop学习总结之三:Map-Reduce入门Hadoop学习总结之四:Map-Reduce的过程解析在使用hadoop的时候,可能遇到各种各样的问题,然而由于hadoop的运行机制比较复杂,因而出现了问题的时候比较难于发现问题。 本文欲通过某种方式跟踪Hadoop的运行痕迹,方便出现问题的时候可以通过这些痕迹来解决问题。 一、环境的搭建 为了能够跟踪这些运行的痕迹,我们需要搭建一个特殊的环境,从而可以一步步的查看上一节提到的一些关键步骤所引起的变化。 我们首先搭建一个拥有一个NameNode(namen
2010-11-22T16:28:00Z
2010-11-22T16:28:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】Hadoop 学习总结之一:HDFS简介Hadoop学习总结之二:HDFS读写过程解析Hadoop学习总结之三:Map-Reduce入门Hadoop学习总结之四:Map-Reduce的过程解析在使用hadoop的时候,可能遇到各种各样的问题,然而由于hadoop的运行机制比较复杂,因而出现了问题的时候比较难于发现问题。 本文欲通过某种方式跟踪Hadoop的运行痕迹,方便出现问题的时候可以通过这些痕迹来解决问题。 一、环境的搭建 为了能够跟踪这些运行的痕迹,我们需要搭建一个特殊的环境,从而可以一步步的查看上一节提到的一些关键步骤所引起的变化。 我们首先搭建一个拥有一个NameNode(namen <a href="https://www.cnblogs.com/forfuture1978/archive/2010/11/23/1884967.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/11/19/1882279.html
(转)MapReduce源码分析总结 - 刘超觉先
转者注:本来想在Hadoop学习总结系列详细解析HDFS以及Map-Reduce的,然而查找资料的时候,发现了这篇文章,并且发现caibinbupt已经对Hadoop的源代码已经进行了详细的分析,推荐大家阅读。 转自http://blog.csdn.net/HEYUTAO007/archive/2010/07/10/5725379.aspx 参考: 1 caibinbupt的源代码分析http://caibinbupt.javaeye.com/ 2 coderplay的avaeye http://coderplay.javaeye.com/blog/295097 http://coderpla
2010-11-19T15:52:00Z
2010-11-19T15:52:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】转者注:本来想在Hadoop学习总结系列详细解析HDFS以及Map-Reduce的,然而查找资料的时候,发现了这篇文章,并且发现caibinbupt已经对Hadoop的源代码已经进行了详细的分析,推荐大家阅读。 转自http://blog.csdn.net/HEYUTAO007/archive/2010/07/10/5725379.aspx 参考: 1 caibinbupt的源代码分析http://caibinbupt.javaeye.com/ 2 coderplay的avaeye http://coderplay.javaeye.com/blog/295097 http://coderpla <a href="https://www.cnblogs.com/forfuture1978/archive/2010/11/19/1882279.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/11/19/1882268.html
Hadoop学习总结之四:Map-Reduce的过程解析 - 刘超觉先
一、客户端 Map-Reduce的过程首先是由客户端提交一个任务开始的。 提交任务主要是通过JobClient.runJob(JobConf)静态函数实现的: public static RunningJob runJob(JobConf job) throws IOException { //首先生成一个JobClient对象 JobClient jc = new JobClient(job); …… //调用submitJob来提交一个任务 running = jc.submitJob(job); JobID jobId = running.getID(); …… ...
2010-11-19T15:45:00Z
2010-11-19T15:45:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】一、客户端 Map-Reduce的过程首先是由客户端提交一个任务开始的。 提交任务主要是通过JobClient.runJob(JobConf)静态函数实现的: public static RunningJob runJob(JobConf job) throws IOException { //首先生成一个JobClient对象 JobClient jc = new JobClient(job); …… //调用submitJob来提交一个任务 running = jc.submitJob(job); JobID jobId = running.getID(); …… ... <a href="https://www.cnblogs.com/forfuture1978/archive/2010/11/19/1882268.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/11/14/1877086.html
Hadoop学习总结之三:Map-Reduce入门 - 刘超觉先
1、Map-Reduce的逻辑过程 假设我们需要处理一批有关天气的数据,其格式如下: 按照ASCII码存储,每行一条记录 每一行字符从0开始计数,第15个到第18个字符为年 第25个到第29个字符为温度,其中第25位是符号+/- 0067011990999991950051507+0000+ 0043011990999991950051512+0022+ 0043011990999991950051518-0011+ 0043012650999991949032412+0111+ 0043012650999991949032418+0078+ 00670119909999919370...
2010-11-14T10:24:00Z
2010-11-14T10:24:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】1、Map-Reduce的逻辑过程 假设我们需要处理一批有关天气的数据,其格式如下: 按照ASCII码存储,每行一条记录 每一行字符从0开始计数,第15个到第18个字符为年 第25个到第29个字符为温度,其中第25位是符号+/- 0067011990999991950051507+0000+ 0043011990999991950051512+0022+ 0043011990999991950051518-0011+ 0043012650999991949032412+0111+ 0043012650999991949032418+0078+ 00670119909999919370... <a href="https://www.cnblogs.com/forfuture1978/archive/2010/11/14/1877086.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/11/10/1874222.html
Hadoop学习总结之二:HDFS读写过程解析 - 刘超觉先
一、文件的打开 1.1、客户端 HDFS打开一个文件,需要在客户端调用DistributedFileSystem.open(Path f, int bufferSize),其实现为: public FSDataInputStream open(Path f, int bufferSize) throws IOException { return new DFSClient.DFSDataInputStream( dfs.open(getPathName(f), bufferSize, verifyChecksum, statistics)); } 其中dfs为Distributed...
2010-11-10T13:40:00Z
2010-11-10T13:40:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】一、文件的打开 1.1、客户端 HDFS打开一个文件,需要在客户端调用DistributedFileSystem.open(Path f, int bufferSize),其实现为: public FSDataInputStream open(Path f, int bufferSize) throws IOException { return new DFSClient.DFSDataInputStream( dfs.open(getPathName(f), bufferSize, verifyChecksum, statistics)); } 其中dfs为Distributed... <a href="https://www.cnblogs.com/forfuture1978/archive/2010/11/10/1874222.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/09/12/1824443.html
面向连接的Socket Server的简单实现 - 刘超觉先
一、基本原理 有时候我们需要实现一个公共的模块,需要对多个其他的模块提供服务,最常用的方式就是实现一个Socket Server,接受客户的请求,并返回给客户结果。 这经常涉及到如果管理多个连接及如何多线程的提供服务的问题,常用的方式就是连接池和线程池,基本流程如下: 首先服务器端有一个监听线程,不断监听来自客户端的连接。 当一个客户端连接到监听线程后,便建立了一个新的连接。 监听线程将新建立的连接放入连接池进行管理,然后继续监听新来的连接。 线程池中有多个服务线程,每个线程都监听一个任务队列,一个建立的连接对应一个服务任务,当服务线程发现有新的任务的时候,便用此连接向客户端提供服务。 一..
2010-09-12T08:30:00Z
2010-09-12T08:30:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】一、基本原理 有时候我们需要实现一个公共的模块,需要对多个其他的模块提供服务,最常用的方式就是实现一个Socket Server,接受客户的请求,并返回给客户结果。 这经常涉及到如果管理多个连接及如何多线程的提供服务的问题,常用的方式就是连接池和线程池,基本流程如下: 首先服务器端有一个监听线程,不断监听来自客户端的连接。 当一个客户端连接到监听线程后,便建立了一个新的连接。 监听线程将新建立的连接放入连接池进行管理,然后继续监听新来的连接。 线程池中有多个服务线程,每个线程都监听一个任务队列,一个建立的连接对应一个服务任务,当服务线程发现有新的任务的时候,便用此连接向客户端提供服务。 一.. <a href="https://www.cnblogs.com/forfuture1978/archive/2010/09/12/1824443.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/06/27/1766162.html
有关Lucene的问题(8):用Lucene构建实时索引的文档更新问题 - 刘超觉先
在有关Lucene的问题(7),讨论了使用Lucene内存索引和硬盘索引构建实时索引的问题。 然而有的读者提到,如果涉及到文档的删除及更新,那么如何构建实时的索引呢?本节来讨论这个问题。 1、Lucene删除文档的几种方式 IndexReader.deleteDocument(int docID)是用 IndexReader 按文档号删除。 IndexReader.deleteDocuments(Term term)是用 IndexReader 删除包含此词(Term)的文档。 IndexWriter.deleteDocuments(Term term)是用 IndexWriter 删除包..
2010-06-27T06:17:00Z
2010-06-27T06:17:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】在有关Lucene的问题(7),讨论了使用Lucene内存索引和硬盘索引构建实时索引的问题。 然而有的读者提到,如果涉及到文档的删除及更新,那么如何构建实时的索引呢?本节来讨论这个问题。 1、Lucene删除文档的几种方式 IndexReader.deleteDocument(int docID)是用 IndexReader 按文档号删除。 IndexReader.deleteDocuments(Term term)是用 IndexReader 删除包含此词(Term)的文档。 IndexWriter.deleteDocuments(Term term)是用 IndexWriter 删除包.. <a href="https://www.cnblogs.com/forfuture1978/archive/2010/06/27/1766162.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/06/13/1757479.html
Lucene 原理与代码分析完整版 - 刘超觉先
Lucene 原理与代码分析系列文章已经基本告一段落,可能问题篇还会有新的更新。完整版pdf可由以下链接下载。Lucene 原理与代码分析完整版目录如下:目录目录第一篇:原理篇第一章:全文检索的基本原理一、总论二、索引里面究竟存些什么三、如何创建索引第一步:一些要索引的原文档(Document)。第二步:将原文档传给分次组件(Tokenizer)。第三步:将得到的词元(Token)传给语言处理组件(Linguistic Processor)。第四步:将得到的词(Term)传给索引组件(Indexer)。1.利用得到的词(Term)创建一个字典。2.对字典按字母顺序进行排序。3.合并相同的词(T
2010-06-12T17:52:00Z
2010-06-12T17:52:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】Lucene 原理与代码分析系列文章已经基本告一段落,可能问题篇还会有新的更新。完整版pdf可由以下链接下载。Lucene 原理与代码分析完整版目录如下:目录目录第一篇:原理篇第一章:全文检索的基本原理一、总论二、索引里面究竟存些什么三、如何创建索引第一步:一些要索引的原文档(Document)。第二步:将原文档传给分次组件(Tokenizer)。第三步:将得到的词元(Token)传给语言处理组件(Linguistic Processor)。第四步:将得到的词(Term)传给索引组件(Indexer)。1.利用得到的词(Term)创建一个字典。2.对字典按字母顺序进行排序。3.合并相同的词(T <a href="https://www.cnblogs.com/forfuture1978/archive/2010/06/13/1757479.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/06/08/1753642.html
有关Lucene的问题(7):用Lucene构建实时的索引 - 刘超觉先
由于前一章所述的Lucene的事务性,使得Lucene可以增量的添加一个段,我们知道,倒排索引是有一定的格式的,而这个格式一旦写入是非常难以改变的,那么如何能够增量建索引呢?Lucene使用段这个概念解决了这个问题,对于每个已经生成的段,其倒排索引结构不会再改变,而增量添加的文档添加到新的段中,段之间在一定的时刻进行合并,从而形成新的倒排索引结构。 然而也正因为Lucene的事务性,使得Lucene的索引不够实时,如果想Lucene实时,则必须新添加的文档后IndexWriter需要commit,在搜索的时候IndexReader需要重新的打开,然而当索引在硬盘上的时候,尤其是索引非常大的时候
2010-06-07T17:59:00Z
2010-06-07T17:59:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】由于前一章所述的Lucene的事务性,使得Lucene可以增量的添加一个段,我们知道,倒排索引是有一定的格式的,而这个格式一旦写入是非常难以改变的,那么如何能够增量建索引呢?Lucene使用段这个概念解决了这个问题,对于每个已经生成的段,其倒排索引结构不会再改变,而增量添加的文档添加到新的段中,段之间在一定的时刻进行合并,从而形成新的倒排索引结构。 然而也正因为Lucene的事务性,使得Lucene的索引不够实时,如果想Lucene实时,则必须新添加的文档后IndexWriter需要commit,在搜索的时候IndexReader需要重新的打开,然而当索引在硬盘上的时候,尤其是索引非常大的时候 <a href="https://www.cnblogs.com/forfuture1978/archive/2010/06/08/1753642.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/06/07/1752917.html
有关Lucene的问题(6):Lucene的事务性 - 刘超觉先
所谓事务性,本多指数据库的属性,包括ACID四个基本要素:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 我们这里主要讨论隔离性,Lucene的IndexReader和IndexWriter具有隔离性。 当IndexReader.open打开一个索引的时候,相对于给当前索引进行了一次snapshot,此后的任何修改都不会被看到。 仅当IndexReader.open打开一个索引后,才有可能看到从上次打开后对索引的修改。 当IndexWriter没有调用Commit的时候,其修改的内容是不能够被看到的,哪怕...
2010-06-06T17:39:00Z
2010-06-06T17:39:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】所谓事务性,本多指数据库的属性,包括ACID四个基本要素:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 我们这里主要讨论隔离性,Lucene的IndexReader和IndexWriter具有隔离性。 当IndexReader.open打开一个索引的时候,相对于给当前索引进行了一次snapshot,此后的任何修改都不会被看到。 仅当IndexReader.open打开一个索引后,才有可能看到从上次打开后对索引的修改。 当IndexWriter没有调用Commit的时候,其修改的内容是不能够被看到的,哪怕... <a href="https://www.cnblogs.com/forfuture1978/archive/2010/06/07/1752917.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/06/06/1752837.html
Lucene学习总结之十:Lucene的分词器Analyzer - 刘超觉先
1、抽象类Analyzer 其主要包含两个接口,用于生成TokenStream: TokenStream tokenStream(String fieldName, Reader reader); TokenStream reusableTokenStream(String fieldName, Reader reader) ; 所谓TokenStream,后面我们会讲到,是一个由分词后的Token结果组成的流,能够不断的得到下一个分成的Token。 为了提高性能,使得在同一个线程中无需再生成新的TokenStream对象,老的可以被重用,所以有reusableTokenStream一说...
2010-06-06T14:14:00Z
2010-06-06T14:14:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】1、抽象类Analyzer 其主要包含两个接口,用于生成TokenStream: TokenStream tokenStream(String fieldName, Reader reader); TokenStream reusableTokenStream(String fieldName, Reader reader) ; 所谓TokenStream,后面我们会讲到,是一个由分词后的Token结果组成的流,能够不断的得到下一个分成的Token。 为了提高性能,使得在同一个线程中无需再生成新的TokenStream对象,老的可以被重用,所以有reusableTokenStream一说... <a href="https://www.cnblogs.com/forfuture1978/archive/2010/06/06/1752837.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738806.html
Lucene学习总结之九:Lucene的查询对象 - 刘超觉先
Lucene学习总结之九:Lucene的查询对象(1)http://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738803.htmlLucene学习总结之九:Lucene的查询对象(2)http://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738804.htmlLucene学习总结之九:Lucene的查询对象(3)http://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738805.html---------------
2010-05-18T18:35:00Z
2010-05-18T18:35:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】Lucene学习总结之九:Lucene的查询对象(1)http://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738803.htmlLucene学习总结之九:Lucene的查询对象(2)http://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738804.htmlLucene学习总结之九:Lucene的查询对象(3)http://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738805.html--------------- <a href="https://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738806.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738803.html
Lucene学习总结之九:Lucene的查询对象(1) - 刘超觉先
Lucene除了支持查询语法以外,还可以自己构造查询对象进行搜索。 从上一节的Lucene的语法一章可以知道,能与查询语句对应的查询对象有:BooleanQuery,FuzzyQuery,MatchAllDocsQuery,MultiTermQuery,MultiPhraseQuery,PhraseQuery,PrefixQuery,TermRangeQuery,TermQuery,WildcardQuery。 Lucene还支持一些查询对象并没有查询语句与之对应,但是能够实现相对高级的功能,本节主要讨论这些高级的查询对象。 它们中间最主要的一些层次结构如下,我们将一一解析。 Query B.
2010-05-18T18:29:00Z
2010-05-18T18:29:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】Lucene除了支持查询语法以外,还可以自己构造查询对象进行搜索。 从上一节的Lucene的语法一章可以知道,能与查询语句对应的查询对象有:BooleanQuery,FuzzyQuery,MatchAllDocsQuery,MultiTermQuery,MultiPhraseQuery,PhraseQuery,PrefixQuery,TermRangeQuery,TermQuery,WildcardQuery。 Lucene还支持一些查询对象并没有查询语句与之对应,但是能够实现相对高级的功能,本节主要讨论这些高级的查询对象。 它们中间最主要的一些层次结构如下,我们将一一解析。 Query B. <a href="https://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738803.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738804.html
Lucene学习总结之九:Lucene的查询对象(2) - 刘超觉先
5、SpanQuery 所谓SpanQuery也即在查询过程中需要考虑进Term的位置信息的查询对象。 SpanQuery中最基本的是SpanTermQuery,其只包含一个Term,与TermQuery所不同的是,其提供一个函数来得到位置信息: public Spans getSpans(final IndexReader reader) throws IOException { return new TermSpans(reader.termPositions(term), term); } Spans有以下方法: next() 得到下一篇文档号,不同的SpanQuery此方...
2010-05-18T18:29:00Z
2010-05-18T18:29:00Z
刘超觉先
https://www.cnblogs.com/forfuture1978/
【摘要】5、SpanQuery 所谓SpanQuery也即在查询过程中需要考虑进Term的位置信息的查询对象。 SpanQuery中最基本的是SpanTermQuery,其只包含一个Term,与TermQuery所不同的是,其提供一个函数来得到位置信息: public Spans getSpans(final IndexReader reader) throws IOException { return new TermSpans(reader.termPositions(term), term); } Spans有以下方法: next() 得到下一篇文档号,不同的SpanQuery此方... <a href="https://www.cnblogs.com/forfuture1978/archive/2010/05/19/1738804.html" target="_blank">阅读全文</a>