写给自己的歌

Panda loves Bunny

总结一下lucene的环境搭建,查看以及了解lucene的原理,对其有个大概的了解。

1、下载lucene2.3.2

地址:http://apache.mirror.phpchina.com/lucene/java/

2、下载jdk1.6

3、下载tomcat

下载以上内容完成后,开始安装。 More

1. 搭建Lucene的开发环境:在classpath中添加lucene-core-2.9.1.jar包

2. 全文搜索的两个工作: 建立索引文件,搜索索引.

3. Lucene的索引文件逻辑结构
1) 索引(Index)由若干块(片段)(Segment)组成
2) 块由若干文档(Document)组成: 一个文件映射成一个文档。数据库表中的一条记录映射成一个文档。
3) 文档由若干域(Field)组成:文件的属性(文件路径,文件的内容)映射成一个域。记录的某个字段映射成一个域。
4) 域由若干词(关键字)(Term)组成:文件的属性的内容中某个字符串映射成一个词。 More

Luncene是什么就不介绍了。

一、先去网上Down下来 paoding-analysis-2.0.4-beta,解压,在lib目录找到lucene-core-2.2.0.jar,lucene-highlighter-2.2.0.jar,commons-logging.jar 这几个Jar包放到项目当中。

二、添加Paoding。 在项目中使用发现,直接添加paoding-analysis.jar会发生异常。所以我们不直接添加这个Jar,而是把Src目录下的所有文件(也就是源代码) copy 都我们项目的Src目录下;

三、把dic(词典)目录也copy 到我们项目的src下,并在Src目录新建一个包data.index,主要是用来存放生成的索引文件;

四、修改 paoding-dic-home.properties 这个属性文件 More

1、indexWriter类主要功能是对索引的创建,加入Document后,合并各种索引段,以及控制与索引相关的其他方面,它是lucene索引的主要操纵者。

2、我们首先看看IndexWriter的构造函数 More

1 倒排索引
倒排索引是满足实际应用而设计的一种数据结构。倒排索引的每一个元素是一个索引项,每一个索引项是由关键字属性值和关键字关联结果,或者记录的存放地址组 成。倒排索引是利用索引关键字直接确定文档列表,最后确定希望找到的文档列表。与传统的顺序查找和记录组织方式相反,因此称为倒排索引。通常把采用倒排索 引方式组织的文件或者倒排索引和文档主文件一起称为倒排文件。
2 Lucence索引器
2.1 模式
2.1.1 独立索引模式:每个Document独立索引成一 个文件
2.1.2 符合索引模式:等待索引的全部Document索 引成一个文件
2.2 结构
索引项->索引域->索引文档->索引段->索引
2.2.1 索引域的属性
1、域的名称(String类型)
Lucene3.0之索引(3):实例
2、域存储的值
3、Store
Store.YES:保持索引和原始信息
Store.NO:信息只索引,但不保存
4、Index
Index.ANALYZED:分词并建立索引
Index.ANALYZED_NO_NORMS:分词并建立索引,同时index-time,document boosting和field length normalization这几个域不使用。
Index.NO:不建立索引
Index.NOT_ANALYZED:不分词,但建立索引
Index.NOT_ANALYZED_NO_NORMS:不分词,建立索引,同时index-time,document boosting和field length normalization这几个域不使用。
5、Field.TermVector:表示域内信息是否需要分词。 More

一月 31st, 2012

Lucene的索引文件格式

No Comments, 使用心得, 网文转载, by tumaotm_122.

Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式,是读懂Lucene源代码的一把钥匙。

当我们真正进入到Lucene源代码之中的时候,我们会发现:

Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程。
Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分(score)的过程。
本文详细解读了Apache Lucene – Index File Formats(http://lucene.apache.org/java/2_9_0/fileformats.html) 这篇文章。 More

一月 31st, 2012

HTML Parser使用

No Comments, 使用心得, 网文转载, by tumaotm_122.

Lucene 2.2.0发行包中自带的org.apache.lucene.demo包中,有一个为HTML和TXT文件建立索引、删除索引以及实现检索的实例,其中在org.apache.lucene.demo.html包中的一些类,是真正解析HTML文件的工具类,包括解析类、预定义类、异常处理类。

这个例子的命令提示为:

IndexHTML [-create] [-index]

是建关于索引的命令,-create是建立索引,-index是选择删除指定的索引文件。

这个例子运行过程如下所示。

将相关jar包luene-core-2.2.0.jar和lucene-demos-2.2.0.jar加入到当前的CLASSPATH中,设置环境变量:

E:\Lucene\lucene-2.2.0\lucene-2.2.0\lu
ene-core-2.2.0.jar;E:\Lucene\lucene-2.2.0\lucene-2.2.0\lucene-demos-2.2.0.jar; More

问题产生:
用Lucene自带的htmlindex Demo在建索引时,会报错:
Parse Aborted: Lexical error at line 63, column 16. Encountered: “\u987b” (39035), after : “”

究其原因是由于某html文档里的某标签内出现Unicode编码的字符,如出现中文,而导致的。

问题解决:
只要修改HtmlParser.jj,就可以解决以上问题:
第一:先下载一个javacc
第二:修改HtmlParser.jj文件的
options { IGNORE_CASE = true; STATIC = false;} 为:
options { IGNORE_CASE = true; STATIC = false; UNICODE_INPUT=true;}
第三:运行javacc HtmlParser.jj
第四:把产生出来的java文件覆盖JavaCC HTML Parser 的源文件

=================================================

Java支持UTF-8、ISO-8859-1、GBK等各种字体编码,可笔者发现Java中字体编码的问题仍难倒了不少程序员,网上虽然也有不少关于在Java中如何正确显示中文的文章,但都不够全面,笔者特意总结如下。

影响Java中字体编码正确显示的有几个因素: 1)数据库的连接方式; 2)网页中使用的字体编码; 3)数据库里存放数据的字体编码; 4)Java的缺省字体编码。如果在编程中遇到不能正确显示中文时,要先弄清楚以上几项所使用的字体编码,再分析找出原因,即可解决问题。

众所周知,JSP是Java的一种,和网页有关,而网页也有自己的中文编码系统,所以JSP处理中文要比纯Java的类文件更为麻烦。本文的测试数据库是MySQL3.2,数据库连接驱动是用org.gjt.mm.mysql.Driver,这里主要讨论UTF-8和GBK的显示( GB2312是GBK的一个子集,Java中可以使用GBK来代替GB系列)。我们先来研究JSP中字体编码问题,下面第一到第六点是针对JSP的(因为从数据库里读出中文数据与写入中文数据有所区别,咱们分别说明,前三点是从读取数据库到显示在网页,后三点是从网页输入数据到存入数据库),第七到第九点针对纯Java的类文件。以下rs表示ResultSet的一个实例,是执行Select语句之后产生的数据集。 More

九月 15th, 2011

一个女留学生在美国的七年

No Comments, 网文转载, by tumaotm_122.

Received a message from a friend this morning:

–   it has been 7 years since the flight from shanghai to RDU!

so I replied:

–   Yeah, isn’t time flying?

2003年8月12日,到今天正好来美7周年。对我来说,5年感觉挺短,10年就觉得很长,数字7么,不长不短的,写点东西好像正好。

7年如果看做一个可以移动的框,放在人生的初始,是从襁褓到走进小学,再往后挪挪,是从小姑娘变成大姑娘,再后面就是从离家一天都想家的宅女到只身去北京上学。而现在的这个框是在异国他乡度过的22岁到29岁这段人生最美丽的时光。

在美国这7年,是一场游历,一场冒险,一场人生观的洗礼。从平凡到努力追求光环,到回归平凡。从cultural shock,到适应这里的生活,到reverse cultural shock,到能够在中国美国之间自如地穿行。

有那么多事情看着一头雾水,居然慢慢也能学会,然后做好。有那么坎好像真的过不去了,却也终于安安稳稳全都跨过。也许没有了身边父母的指引,朋友的影响,反而更容易长大,更懂得珍惜。

这何尝不是一种领悟

让我把自己看清楚

谨以此献给过去的7年

谨以此憧憬那未知的将来

2003-2004 第一年

出 国那年赶上美国这边砍research funding,中国SARS爆发,总之offer很少,签证更是前无古人后无来者得难,每天只过有限的几个。当时学校实行封闭制,出个校门要上报到学校 党委,好不容易批准了出去签个证。怕坐地铁,坐公车传染,居然和朋友两人从五道口一路骑车去的大使馆。那天我所见到的那群签证的人里面,一共过了两个,我 和我的朋友。回来的路上,我们一路都在day dreaming美国的生活,就好像那个原本陌生的国家忽然变得那么近了,看得见摸得着了一样。 More

七月 24th, 2011

陈荩民先生生平

No Comments, 网文转载, by tumaotm_122.

陈荩民(Chen Jinmin)(1895.7.5——1981.3.7)诞生于浙江省天台县,北京工业学院(现北京理工大学)教授。他长期从事高等数学教育及高等教育工作,曾撰写了大量数学专著、教材及科普读物,对中国教育及科学事业做出了可贵贡献.

陈荩民(1895—1981),原名陈宏勋,天台县城人。1916年,入北京高等师范学校(北京师范大学前身)数理部学习。曾举办平民学校,开展社会服务活动。1918年加入北京大学、北京高师等进步学生组织的国民杂志社,任评议员,参加反帝反封建的爱国活动。1919年5月4日游行时,与匡互生、杨明轩、朱究庭等翻墙进入卖国贼曹汝霖住宅院内打开大门,使游行队伍入内,痛打章宗祥,火烧赵家楼,被反动军警打伤、逮捕。经多方交涉、营救,由校长保释。改名荩民,立志忠诚于人民。 More

笔记本是半年前拿到手的,第一次用戴尔的机器,感觉还不错,以前一直对DELL的货有偏见,现在发现这款E6410无论外观还是性能都是中规中矩,满足我的需求,2个月前,淘了一块4G内存,于是和笔记本原有1G内存结合变成了5G内存,所以32bit的系统已经不能满足我的需求了,故此安装windows 7 64bit系统,在近两个月的使用过程中,出现了频繁死机和多次BSOD的情形。读错误是关于e1k62x64.sys 我一直没当回事。 今天终于在死机N次情况下忍无可忍,开始检查机器,首先系统报错的sys是有线网卡的驱动。我百思不得其解,于是从能拆的硬件开始检查,因为出现死机和错误时都是在机器传输文件或是通过网线观看视频或是听网络歌曲时,我先检查了内存,两条内存条单独放置时均有死机情况,排除。  检查硬盘 无错误。 最后只好上网搜与网卡相关信息了。

终于在墙外找到了解决方案,原文求助如下: More

六月 27th, 2011

ZZ:要么滚回家里去,要么就拼

1 Comment, 网文转载, by tumaotm_122.

以前在墨尔本的一个室友,突然打电话给我,在我这里马上要凌晨3点的时候。他让我猜他现在在哪里,我说不是在墨尔本嘛,你还能去哪。他很神秘地说,不是哦,我现在在西班牙。然后我一下子就愣住了。因为很久之前我在一个人人相册里看到有关西班牙的照片的时候,曾经跟他说,西班牙那么漂亮自己将来一定要去一次。 我没有想到的是,在我就要把自己曾经一闪而过的想法忘记的时候,他的电话就这么来了。到最后,站在我最想去的地方的人,却不是我。

挂了电话之后酷我音乐盒正好放到阿姆的lose yourself,依旧是那熟悉的节奏,和他的那段:look, if you had, one shot, or one opportunity, to seize everything that you ever wanted – one moment. Would you capture it or just lst it slip. 不知道为什么脑海里浮现的是《当幸福来敲门》,是男主角最穷困潦倒的时候在车站的厕所里过夜,是他身上只有20每分的日子,可是他从来就没有放弃过。

如果你有梦想,就一定要捍卫它。 More

标题党一下。

昨天在群里听师兄怂恿说要大家一起挖矿,十分不解。讯问后才发现有一种叫做bitcoin的虚拟货币现在十分火爆。今天上午研究了一下,觉得这个真是个好东西,虽然风险很大,但是身在一个用电不要钱并且拥有大量计算资源的实验室中,挖矿赚钱还是一个十分可行的方法。

首先转载一下bitcoin的概念,为各位没听说过此名词的看官扫扫盲。 More

三月 22nd, 2011

也看Facebook的汉化

No Comments, 囧囧更健康, by tumaotm_122.

早起翻墙,寻找一个博客自动关联facebook的插件,发现种类繁多,申请的时候却遇到了问题,插件都要求使用者创建一个facebook的app才能使用插件功能,可惜申请的时候又遇到了麻烦,facebook需要使用者的电话号码,这真是难倒我了,facebook的原生运营商并没有中国大陆的任何一个公司。好囧。 见下图:

More