自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

转载 Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析)

我们来看最复杂的部分,就是Term Dictionary和Term Index文件,Term Dictionary文件的后缀名为tim,Term Index文件的后缀名是tip,格式如图所示。Term Dictionary文件首先是一个Header,接下来是PostingsHeader,这两个的格式一致,但是保存的是不同的信息。SkipInterval是跳跃表的跳的幅度,M...

2014-08-29 21:14:00 542

转载 Lucene 4.X 倒排索引原理与实现: (2) 倒排表的格式设计

1. 定长编码最容易想到的方式就是常用的普通二进制编码,每个数值占用的长度相同,都占用最大的数值所占用的位数,如图所示。这里有一个文档ID列表,254,507,756,1007,如果按照二进制定长编码,需要按照最大值1007所占用的位数10位进行编码,每个数字都占用10位。和词典的格式设计中顺序列表方式遇到的问题一样,首先的问题就是空间的浪费,本来254这个数值8位...

2014-08-29 11:40:00 316

转载 Lucene 4.X 倒排索引原理与实现: (1) 词典的设计

词典的格式设计词典中所保存的信息主要是三部分:Term字符串Term的统计信息,比如文档频率(Document Frequency)倒排表的位置信息其中Term字符串如何保存是一个很大的问题,根据上一章基本原理的表述中,我们知道,写入文件的Term是按照字典顺序排好序的,那么如何将这些排好序的Term保存起来呢?1. 顺序列表式一个直观的想法就是顺序列...

2014-08-28 10:23:00 295

转载 Notes for Linux Administration Handbook (1) : Booting and Shutting Down

转载于:https://www.cnblogs.com/forfuture1978/p/3373236.html

2013-10-17 00:48:00 103

转载 lucene应用开发揭秘上线了

Lucene应用开发揭秘华章培训网地址:http://www.hztraining.com/bbs/showtopic-1954.aspxChinaPub地址:http://product.china-pub.com/3502099&ref=xiliegoumai注意事项:由于本人是首次录制此类视频,不完美之处敬请谅解此系列课程主要包涵三大部分,一是搜索引擎的原理,二是luc...

2011-09-10 00:01:00 101

转载 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...

2010-11-29 21:19:00 108

转载 Hadoop学习总结之五:Hadoop的运行痕迹

Hadoop 学习总结之一:HDFS简介Hadoop学习总结之二:HDFS读写过程解析Hadoop学习总结之三:Map-Reduce入门Hadoop学习总结之四:Map-Reduce的过程解析在使用hadoop的时候,可能遇到各种各样的问题,然而由于hadoop的运行机制比较复杂,因而出现了问题的时候比较难于发现问题。 本文欲通过某种方式跟踪Hadoop的运行痕迹,方便出现问题的时候...

2010-11-23 00:28:00 232

转载 (转)MapReduce源码分析总结

转者注:本来想在Hadoop学习总结系列详细解析HDFS以及Map-Reduce的,然而查找资料的时候,发现了这篇文章,并且发现caibinbupt已经对Hadoop的源代码已经进行了详细的分析,推荐大家阅读。 转自http://blog.csdn.net/HEYUTAO007/archive/2010/07/10/5725379.aspx 参考: 1 caibinbupt的源代码分析h...

2010-11-19 23:52:00 314

转载 Hadoop学习总结之四:Map-Reduce的过程解析

一、客户端 Map-Reduce的过程首先是由客户端提交一个任务开始的。 提交任务主要是通过JobClient.runJob(JobConf)静态函数实现的: public static RunningJob runJob(JobConf job) throws IOException { //首先生成一个JobClient对象 JobClient jc = new Jo...

2010-11-19 23:45:00 228

转载 Hadoop学习总结之三:Map-Reduce入门

1、Map-Reduce的逻辑过程 假设我们需要处理一批有关天气的数据,其格式如下: 按照ASCII码存储,每行一条记录 每一行字符从0开始计数,第15个到第18个字符为年 第25个到第29个字符为温度,其中第25位是符号+/- 0067011990999991950051507+0000+ 0043011990999991950051512+0022+ 00430119909...

2010-11-14 18:24:00 384

转载 Hadoop学习总结之二:HDFS读写过程解析

一、文件的打开 1.1、客户端 HDFS打开一个文件,需要在客户端调用DistributedFileSystem.open(Path f, int bufferSize),其实现为: public FSDataInputStream open(Path f, int bufferSize) throws IOException { return new DFSClient.D...

2010-11-10 21:40:00 155

转载 面向连接的Socket Server的简单实现

一、基本原理 有时候我们需要实现一个公共的模块,需要对多个其他的模块提供服务,最常用的方式就是实现一个Socket Server,接受客户的请求,并返回给客户结果。 这经常涉及到如果管理多个连接及如何多线程的提供服务的问题,常用的方式就是连接池和线程池,基本流程如下: 首先服务器端有一个监听线程,不断监听来自客户端的连接。 当一个客户端连接到监听线程后,便建立了一个新的连接。 监听线...

2010-09-12 16:30:00 96

转载 有关Lucene的问题(8):用Lucene构建实时索引的文档更新问题

在有关Lucene的问题(7),讨论了使用Lucene内存索引和硬盘索引构建实时索引的问题。 然而有的读者提到,如果涉及到文档的删除及更新,那么如何构建实时的索引呢?本节来讨论这个问题。 1、Lucene删除文档的几种方式 IndexReader.deleteDocument(int docID)是用 IndexReader 按文档号删除。 IndexReader.delete...

2010-06-27 14:17:00 86

转载 Lucene 原理与代码分析完整版

Lucene 原理与代码分析系列文章已经基本告一段落,可能问题篇还会有新的更新。完整版pdf可由以下链接下载。Lucene 原理与代码分析完整版目录如下:目录目录第一篇:原理篇第一章:全文检索的基本原理一、总论二、索引里面究竟存些什么三、如何创建索引第一步:一些要索引的原文档(Document)。第二步:将原文档传给分次组件(Tokenizer)。第三步:将得到的词元(Tok...

2010-06-13 01:52:00 108

转载 有关Lucene的问题(7):用Lucene构建实时的索引

由于前一章所述的Lucene的事务性,使得Lucene可以增量的添加一个段,我们知道,倒排索引是有一定的格式的,而这个格式一旦写入是非常难以改变的,那么如何能够增量建索引呢?Lucene使用段这个概念解决了这个问题,对于每个已经生成的段,其倒排索引结构不会再改变,而增量添加的文档添加到新的段中,段之间在一定的时刻进行合并,从而形成新的倒排索引结构。 然而也正因为Lucene的事务性,使得...

2010-06-08 01:59:00 105

转载 有关Lucene的问题(6):Lucene的事务性

所谓事务性,本多指数据库的属性,包括ACID四个基本要素:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 我们这里主要讨论隔离性,Lucene的IndexReader和IndexWriter具有隔离性。 当IndexReader.open打开一个索引的时候,相对于给当前索引进行了一次snapshot,此...

2010-06-07 01:39:00 59

转载 Lucene学习总结之十:Lucene的分词器Analyzer

1、抽象类Analyzer 其主要包含两个接口,用于生成TokenStream: TokenStream tokenStream(String fieldName, Reader reader); TokenStream reusableTokenStream(String fieldName, Reader reader) ; 所谓TokenStream,后面我们会讲到,是一个由...

2010-06-06 22:14:00 158

转载 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.htmlLucen...

2010-05-19 02:35:00 118

转载 Lucene学习总结之九:Lucene的查询对象(1)

Lucene除了支持查询语法以外,还可以自己构造查询对象进行搜索。 从上一节的Lucene的语法一章可以知道,能与查询语句对应的查询对象有:BooleanQuery,FuzzyQuery,MatchAllDocsQuery,MultiTermQuery,MultiPhraseQuery,PhraseQuery,PrefixQuery,TermRangeQuery,TermQuery,Wi...

2010-05-19 02:29:00 106

转载 Lucene学习总结之九:Lucene的查询对象(2)

5、SpanQuery 所谓SpanQuery也即在查询过程中需要考虑进Term的位置信息的查询对象。 SpanQuery中最基本的是SpanTermQuery,其只包含一个Term,与TermQuery所不同的是,其提供一个函数来得到位置信息: public Spans getSpans(final IndexReader reader) throws IOException...

2010-05-19 02:29:00 84

转载 Lucene学习总结之九:Lucene的查询对象(3)

6、FilteredQuery FilteredQuery包含两个成员变量: Query query:查询对象 Filter filter:其有一个函数DocIdSet getDocIdSet(IndexReader reader) 得到一个文档号集合,结果文档必须出自此文档集合,注此处的过滤器所包含的文档号并不是要过滤掉的文档号,而是过滤后需要的文档号。 FilterQuery...

2010-05-19 02:29:00 81

转载 有关Lucene的问题(5):Lucene中的TooManyClause异常

为什么会产生这个异常: 使用Lucene检索过程中如果用到RangeQuery,PrefixQuery,WildcardQuery,FuzzyQuery这四种Query,可能会产生TooManyClauses异常。为什么会产生这个异常呢?举例说明: 以RangeQuery为例,如果日期范围为19990101到20091231,在索引文件中有19990102,19990103等等这些日期词...

2010-05-16 00:29:00 79

转载 linux Kill多个进程

经常需要Kill多个进程,这些进程包含共同的关键字,可以用一条命令Kill掉它们。 ps aux | grep "common" | cut –c 9-15 | xargs kill –9 管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的几个命令: "ps aux" 查看所有进程的命令。这时检索出的进程将作为下一条命令grep ...

2010-05-16 00:18:00 68

转载 Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser(2)

三、解析QueryParser.jj3.1、声明QueryParser类在QueryParser.jj文件中,PARSER_BEGIN(QueryParser)和PARSER_END(QueryParser)之间,定义了QueryParser类。其中最重要的一个函数是public Query parse(String query)函数,也即我们解析Lucene查询语法的...

2010-05-08 00:21:00 173

转载 Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser(1)

一、Lucene的查询语法Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html(1) 语法关键字+ - && || ! ( ) { } [ ] ^ " ~ * ? : \如果所要查询的查询词中本身包含关键字,则需要用\进行转义(2) 查询词(Term)L...

2010-05-08 00:20:00 241

转载 信息检索导论(译):第一章 布尔检索(1)

信息检索这个词的含义非常广。仅从钱包中取出信用卡,然后输入信用卡号也属于信息检索的范畴。然而,从学术角度来讲,信息检索定义如下: 信息检索即从大量非结构化文档集中找到满足需要的文档的过程。 按照如上定义,信息检索曾经是仅少数人如图书管理员,律师,专业搜索者参与的活动。而今非昔比,当今成千上万的人每天都会用搜索引擎搜索网页和邮件。信息检索正迅速取代传统的数据库搜索的方式,成为信息获取的主要...

2010-05-01 20:57:00 269

转载 高级Linux程序设计第五章:进程间通信

五种进程间通信的方式: 共享内存(shared memory):其允许多个进程通过读写同一块内存地址来相互通信。 内存映射(Mapped memory):其和共享内存相似,然而它是和文件系统上的一个文件相关联的。 管道(Pipe):其允许一个进程到另一个相关进程的顺序通信。 先入先出队列(FIFO):和管道类似,然而因为其对应于文件系统上的文件名,可以在两个不相关的进程...

2010-04-29 00:24:00 161

转载 高级Linux程序设计第四章:线程

要想使用POSIX标准线程API(pthreads),需要连接libpthread.so库到程序中。 1、创建线程 进程中的每个线程都有一个线程号,类型为pthread_t。 用pthread_self函数可以返回当前线程的线程号。 线程号之间的比较可以用函数pthread_equal。 if (!pthread_equal (pthread_self (), o...

2010-04-27 00:08:00 95

转载 高级Linux程序设计第三章:进程

每个进程都有一个唯一的进程号。 每个进程都有一个父进程。 系统中的进程以树的形式组织,init进程(进程号为1)作为根。 进程0是调度进程,没有程序与之对应,是内核的一部分。 进程1是init进程,是在系统启动的阶段由内核启动的,对应/sbin/init程序,是普通的用户进程。 程序中可以通过getpid()得到进程号,通过getppid()得到父进程的进程号。 ...

2010-04-25 21:46:00 97

转载 高级Linux程序设计第二章:编写良好的Linux软件

1、同运行环境交互1.1、命令行当一个程序从shell启动的时候,其参数列表包括程序名称及所有的命令行参数% ls -s /其参数列表包含三项:第一项是程序名称ls,第二项和第三项分别是两个命令行参数,-s和/main函数可以通过argc和argv两个参数来访问命令行参数列表:argc是命令行参数的个数,argv是命令行参数字符串指针所组成...

2010-04-25 00:23:00 103

转载 高级Linux程序设计第一章:入门

1、用GCC编译1.1、创建源文件(main.c) C 源文件 - main.c#include <stdio.h>#include “reciprocal.hpp”int main (int argc, char **argv){ int i; i = atoi (argv[1]); print...

2010-04-22 00:30:00 78

转载 Lucene学习总结之七:Lucene搜索过程解析

本系列文章将详细描述几乎最新版本的Lucene的基本原理和代码分析。其中总体架构和索引文件格式是Lucene 2.9的,索引过程分析是Lucene 3.0的。鉴于索引文件格式没有太大变化,因而原文没有更新,原理和架构的文章中引用了前辈的一些图,可能属于早期的Lucene,但不影响对原理和架构的理解。本系列文章尚在撰写之中,将会有Java CC, 分词器,QueryParser...

2010-04-04 18:42:00 104

转载 Lucene学习总结之七:Lucene搜索过程解析(6)

2.4、搜索查询对象 2.4.4、收集文档结果集合及计算打分 在函数IndexSearcher.search(Weight, Filter, int) 中,有如下代码: TopScoreDocCollector collector = TopScoreDocCollector.create(nDocs, !weight.scoresDocsOutOfOrder()); sea...

2010-04-04 18:12:00 117

转载 Lucene学习总结之七:Lucene搜索过程解析(5)

2.4、搜索查询对象 2.4.3、进行倒排表合并 在得到了Scorer对象树以及SumScorer对象树后,便是倒排表的合并以及打分计算的过程。 合并倒排表在此节中进行分析,而Scorer对象树来进行打分的计算则在下一节分析。 BooleanScorer2.score(Collector) 代码如下: public void score(Collector collect...

2010-04-04 18:05:00 123

转载 Lucene学习总结之七:Lucene搜索过程解析(4)

2.4、搜索查询对象 2.4.1.2、创建Weight对象树 BooleanQuery.createWeight(Searcher) 最终返回return new BooleanWeight(searcher),BooleanWeight构造函数的具体实现如下: public BooleanWeight(Searcher searcher) { this.simila...

2010-04-04 17:53:00 146

转载 Lucene学习总结之七:Lucene搜索过程解析(3)

2.3、QueryParser解析查询语句生成查询对象代码为:QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "contents", new StandardAnalyzer(Version.LUCENE_CURRENT)); Query query = parser.parse("+(...

2010-04-04 17:40:00 146

转载 Lucene学习总结之七:Lucene搜索过程解析(2)

二、Lucene搜索详细过程 为了解析Lucene对索引文件搜索的过程,预先写入索引了如下几个文件: file01.txt: apple apples cat dog file02.txt: apple boy cat category file03.txt: apply dog eat etc file04.txt: apply cat foods 2.1、打开IndexReader指...

2010-04-04 17:31:00 116

转载 Lucene学习总结之七:Lucene搜索过程解析(1)

一、Lucene搜索过程总论 搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程。 其可用如下图示: 总共包括以下几个过程: IndexReader打开索引文件,读取并打开指向索引文件的流。 用户输入查询语句 将查询语句转换为查询对象Query对象树 构造Weight对象树,用于计算词的权重Term ...

2010-04-04 17:27:00 412

转载 Hadoop 学习总结之一:HDFS简介

一、HDFS的基本概念 1.1、数据块(block) HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数据块。 和普通文件系统相同的是,HDFS中的文件是被分成64M一块的数据块存储的。 不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。 1.2、元数据节点(Namenode)和...

2010-03-14 02:00:00 415

转载 Lucene学习总结之六:Lucene打分公式的数学推导

在进行Lucene的搜索过程解析之前,有必要单独的一张把Lucene score公式的推导,各部分的意义阐述一下。因为Lucene的搜索过程,很重要的一个步骤就是逐步的计算各部分的分数。 Lucene的打分公式非常复杂,如下: 在推导之前,先逐个介绍每部分的意义: t:Term,这里的Term是指包含域信息的Term,也即title:hello和content:hello是不同的T...

2010-03-07 00:18:00 221

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除