- 博客(60)
- 收藏
- 关注
原创 最新百度网盘邀请码,需要的朋友可以拿去用
http://pan.baidu.com/netdisk/beinvited?invite_code=004d27c9d2e4e177ce64cbab77f5d504 http://pan.baidu.com/netdisk/beinvited?invite_code=48bcdaaecd1ebd5e8e318efd47ac211b http://pan.baidu....
2012-05-23 06:56:07 15284
tomcat插件与Jrebel插件整合(java web开发利器)
工欲善其事必先利其器 tomcat插件是没装myeclipse插件必备的,它减少了部署工程的时间和硬盘空间。使用方便,上手非常容易。为web开发必备。 tomcat插件的下载地址: http://www.eclipsetotale.com/tomcatPlugin.html最新版本支持tomcat7,能在运行主流的eclipse3.X中。把下载到的文件解压到...
2011-03-23 22:45:50 236
eclipse 3.6 Helios 最新插件
eclipse 3.6 helios 发布有半年了,更新下常用的插件 java decompile:http://java.decompiler.free.fr/jd-eclipse/update/还有一些不错的插件推荐下,本人亲自测试保证有用: svn插件插件 subversive- http://download.eclipse.org/technology/subve...
2011-02-19 23:26:14 226
原创 Lucene学习总结之十:Lucene的分词器Analyzer(转)
1、抽象类Analyzer其主要包含两个接口,用于生成TokenStream:TokenStream tokenStream(String fieldName, Reader reader); TokenStream reusableTokenStream(String fieldName, Reader reader) ; 所谓TokenStream,后面我们会讲到,是一个由...
2010-06-08 11:31:44 267
原创 Lucene学习总结之九:Lucene的查询对象(3)转
6、FilteredQuery FilteredQuery包含两个成员变量:Query query:查询对象 Filter filter:其有一个函数DocIdSet getDocIdSet(IndexReader reader) 得到一个文档号集合,结果文档必须出自此文档集合,注此处的过滤器所包含的文档号并不是要过滤掉的文档号,而是过滤后需要的文档号。 FilterQuery...
2010-06-08 11:30:18 118
原创 Lucene学习总结之九:Lucene的查询对象(2)转
5、SpanQuery 所谓SpanQuery也即在查询过程中需要考虑进Term的位置信息的查询对象。SpanQuery中最基本的是SpanTermQuery,其只包含一个Term,与TermQuery所不同的是,其提供一个函数来得到位置信息:public Spans getSpans(final IndexReader reader) throws IOException {...
2010-06-08 11:29:33 127
原创 Lucene学习总结之九:Lucene的查询对象(1)转
Lucene除了支持查询语法以外,还可以自己构造查询对象进行搜索。从上一节的Lucene的语法一章可以知道,能与查询语句对应的查询对象有:BooleanQuery,FuzzyQuery,MatchAllDocsQuery,MultiTermQuery,MultiPhraseQuery,PhraseQuery,PrefixQuery,TermRangeQuery,TermQuery,W...
2010-06-08 11:27:05 133
原创 Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser(2)转
三、解析QueryParser.jj 3.1、声明QueryParser类在QueryParser.jj文件中,PARSER_BEGIN(QueryParser)和PARSER_END(QueryParser)之间,定义了QueryParser类。其中最重要的一个函数是public Query parse(String query)函数,也即我们解析Lucene查询语法的时候调用的...
2010-06-08 11:25:33 109
原创 Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser(1)转
一、Lucene的查询语法Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html(1) 语法关键字+ - && || ! ( ) { } [ ] ^ " ~ * ? : \如果所要查询的查询词中本身包含关键字,则需要用\进行转义(2) 查询词(Term)Lucene...
2010-06-08 11:24:53 160
原创 Lucene学习总结之七:Lucene搜索过程解析(8)转
2.4、搜索查询对象 2.4.4、收集文档结果集合及计算打分在函数IndexSearcher.search(Weight, Filter, int) 中,有如下代码:TopScoreDocCollector collector = TopScoreDocCollector.create(nDocs, !weight.scoresDocsOutOfOrder());se...
2010-06-08 11:22:06 124
原创 Lucene学习总结之七:Lucene搜索过程解析(7)转
2.4、搜索查询对象 2.4.3.2、并集DisjunctionSumScorer(A OR B)DisjunctionSumScorer中有成员变量List<Scorer> subScorers,是一个Scorer的链表,每一项代表一个倒排表,DisjunctionSumScorer就是对这些倒排表取并集,然后将并集中的文档号在nextDoc()函数中依次返回。...
2010-06-08 11:20:53 153
原创 Lucene学习总结之七:Lucene搜索过程解析(6)转
2.4、搜索查询对象 2.4.3、进行倒排表合并在得到了Scorer对象树以及SumScorer对象树后,便是倒排表的合并以及打分计算的过程。合并倒排表在此节中进行分析,而Scorer对象树来进行打分的计算则在下一节分析。BooleanScorer2.score(Collector) 代码如下:public void score(Collector collect...
2010-06-08 11:20:12 83
原创 Lucene学习总结之七:Lucene搜索过程解析(5)转
2.4、搜索查询对象 2.4.2、创建Scorer及SumScorer对象树当创建完Weight对象树的时候,调用IndexSearcher.search(Weight, Filter, int),代码如下: //(a)创建文档号收集器TopScoreDocCollector collector = TopScoreDocCollector.create(...
2010-06-08 11:19:30 155
原创 Lucene学习总结之七:Lucene搜索过程解析(4)转
2.4、搜索查询对象 2.4.1.2、创建Weight对象树BooleanQuery.createWeight(Searcher) 最终返回return new BooleanWeight(searcher),BooleanWeight构造函数的具体实现如下: public BooleanWeight(Searcher searcher) { this.simi...
2010-06-08 11:18:42 142
原创 Lucene学习总结之七:Lucene搜索过程解析(3)转
2.3、QueryParser解析查询语句生成查询对象代码为:QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "contents", new StandardAnalyzer(Version.LUCENE_CURRENT)); Query query = parser.parse("+(+apple* ...
2010-06-08 11:17:59 127
原创 Lucene学习总结之七:Lucene搜索过程解析(2)转
二、Lucene搜索详细过程为了解析Lucene对索引文件搜索的过程,预先写入索引了如下几个文件:file01.txt: apple apples cat dogfile02.txt: apple boy cat categoryfile03.txt: apply dog eat etcfile04.txt: apply cat foods2.1、打开IndexReader...
2010-06-08 11:16:57 111
原创 Lucene学习总结之七:Lucene搜索过程解析(1)转
一、Lucene搜索过程总论搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程。其可用如下图示: 总共包括以下几个过程:IndexReader打开索引文件,读取并打开指向索引文件的流。 用户输入查询语句 将查询语句转换为查询对象Query对象树 构造Weight对象树,用于计算词的权重...
2010-06-08 11:15:08 148
原创 Lucene学习总结之六:Lucene打分公式的数学推导(转)
在进行Lucene的搜索过程解析之前,有必要单独的一张把Lucene score公式的推导,各部分的意义阐述一下。因为Lucene的搜索过程,很重要的一个步骤就是逐步的计算各部分的分数。Lucene的打分公式非常复杂,如下: 在推导之前,先逐个介绍每部分的意义:t:Term,这里的Term是指包含域信息的Term,也即title:hello和content:hello是...
2010-06-08 11:13:06 351
原创 Lucene学习总结之五:Lucene段合并(merge)过程分析(转)
一、段合并过程总论IndexWriter中与段合并有关的成员变量有: HashSet<SegmentInfo> mergingSegments = new HashSet<SegmentInfo>(); //保存正在合并的段,以防止合并期间再次选中被合并。 MergePolicy mergePolicy = new LogByteSizeMergePoli...
2010-06-08 11:12:02 215
原创 Lucene学习总结之四:Lucene索引过程分析(4)转
6、关闭IndexWriter对象代码:writer.close(); --> IndexWriter.closeInternal(boolean) --> (1) 将索引信息由内存写入磁盘: flush(waitForMerges, true, true); --> (2) 进行段合并: mergeScheduler.merge(t...
2010-06-08 11:08:22 109
原创 Lucene学习总结之四:Lucene索引过程分析(3)转
5、DocumentsWriter对CharBlockPool,ByteBlockPool,IntBlockPool的缓存管理在索引的过程中,DocumentsWriter将词信息(term)存储在CharBlockPool中,将文档号(doc ID),词频(freq)和位置(prox)信息存储在ByteBlockPool中。 在ByteBlockPool中,缓存是分块(slice)分配...
2010-06-08 11:07:28 118
原创 Lucene学习总结之四:Lucene索引过程分析(2)转
3、将文档加入IndexWriter代码:writer.addDocument(doc); -->IndexWriter.addDocument(Document doc, Analyzer analyzer) -->doFlush = docWriter.addDocument(doc, analyzer); --> DocumentsW...
2010-06-08 11:06:40 114
原创 Lucene学习总结之四:Lucene索引过程分析(1)转
对于Lucene的索引过程,除了将词(Term)写入倒排表并最终写入Lucene的索引文件外,还包括分词(Analyzer)和合并段(merge segments)的过程,本次不包括这两部分,将在以后的文章中进行分析。Lucene的索引过程,很多的博客,文章都有介绍,推荐大家上网搜一篇文章:《Annotated Lucene》,好像中文名称叫《Lucene源码剖析》是很不错的。想要真正了解...
2010-06-08 11:05:35 142
原创 Lucene学习总结之三:Lucene的索引文件格式 (3)转
四、具体格式4.2. 反向信息反向信息是索引文件的核心,也即反向索引。反向索引包括两部分,左面是词典(Term Dictionary),右面是倒排表(Posting List)。在Lucene中,这两部分是分文件存储的,词典是存储在tii,tis中的,倒排表又包括两部分,一部分是文档号及词频,保存在frq中,一部分是词的位置信息,保存在prx中。Term Dictiona...
2010-06-08 11:02:36 113
原创 Lucene学习总结之三:Lucene的索引文件格式 (2)转
四、具体格式上面曾经交代过,Lucene保存了从Index到Segment到Document到Field一直到Term的正向信息,也包括了从Term到Document映射的反向信息,还有其他一些Lucene特有的信息。下面对这三种信息一一介绍。4.1. 正向信息Index –> Segments (segments.gen, segments_N) –> Field(fnm...
2010-06-08 11:01:20 118
原创 Lucene学习总结之三:Lucene的索引文件格式 (1)转
Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式,是读懂Lucene源代码的一把钥匙。当我们真正进入到Lucene源代码之中的时候,我们会发现:Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程。 Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分(score)的过程。 本文详细解读了...
2010-06-08 11:00:03 109
原创 Lucene学习总结之二:Lucene的总体架构(转)
Lucene总的来说是: 一个高效的,可扩展的,全文检索库。 全部用Java实现,无须配置。 仅支持纯文本文件的索引(Indexing)和搜索(Search)。 不负责由其他格式的文件抽取纯文本文件,或从网络中抓取文件的过程。 在Lucene in action中,Lucene 的构架和过程如下图, 说明Lucene是有索引和搜索的两个过程,包含索引创建,索引,搜...
2010-06-08 10:59:00 133
原创 Lucene学习总结之一:全文检索的基本原理(转)
根据http://lucene.apache.org/java/docs/index.html定义:Lucene是一个高效的,基于Java的全文检索库。所以在了解Lucene之前要费一番工夫了解一下全文检索。那么什么叫做全文检索呢?这要从我们生活中的数据说起。我们生活中的数据总体分为两种:结构化数据和非结构化数据。结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据...
2010-06-08 10:57:30 132
原创 JavaMail 杂记
我们在收取邮件的时候,经常邮件工具会提醒:邮件发送者要求回执,是否发送阅读回执之类的信息。在使用 JavaMail 发送邮件时,我们可以通过下面的设置来要求邮件接收者给我们发送回执。1. 直接调用 MimeMessage 对象的 setHeader 方法MimeMessage msg = ....msg.setHeader("Disposition-Notification-To","...
2010-05-06 14:49:46 364
原创 javamail发送邮件的简单实例 (转)
原文连接:http://www.blogjava.net/wangfun/archive/2009/04/15/265748.html今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题。为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用。呵呵以下三段代码是我的全部代码,朋友们如果想用,直接复制即可。第一个类:MailSenderInfo.java...
2010-05-06 14:44:56 1470
原创 JavaMail(JAVA邮件服务) API详解
一、JavaMail API简介JavaMail API是读取、撰写、发送电子信息的可选包。我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。而不是像sendmail或者其它的邮件传输代理(Mail Transfer Agent,简称MTA)程序那样可以传送、递送、转发邮件。从另外一个角度来看,...
2010-05-06 14:36:52 210
原创 索引技术详解(转)
索引技术 一、数据表的基本结构为认识索引工作原理,首先有必要对数据表的基本结构作一次全面的复习。SQLS 当一个新表被创建之时,系统将在磁盘中分配一段以8K为单位的连续空间,当字段的值从内存写入磁盘时,就在这一既定空间随机保存,当一个8K用完的时候, SQLS指针会自动分配一个8K的空间。这里,每个8K空间被称为一个数据页(...
2010-05-06 14:31:24 236
原创 WEB前端优化技巧(转)
首先,我们通过一个雅虎的统计图表来看看打开http://yahoo.com的http的流量数据: 我们可以发现一个页面的从第一次发出服务器请求到完全载入到客户端的过程中,读取html代码只占了整个响应时间中的5%,这个结果适用于绝大多数 网站,在采样美国的前十位网站<!--此处可放幻灯广告/--> 首先,我们通过一个雅虎的统计图表来看看打开http://yahoo.co...
2010-05-06 14:24:40 108
原创 Tamper Data安装与使用(转)
amper Data概览 注意:我将会讲述一些有关Tamper Data的基本常识,包括它的基本功能,如何安装等。 Tamper Data是什么? Tamper Data 的真实含义,即“篡改数据”(或者说定制 HTTP 请求):截取浏览器发出的每一个 HTTP 请求,提示我们选择是要进行定制,还是不做定制而直接提交请求,还是终止当前被截取的请求,然后根据我们的选择决定是打开定...
2010-05-06 14:09:07 350
原创 firebug指南(六)--HTML标签应用实例(转)
例1.1 如何利用firebug的html灵活视察web页面中的html元素 实例: 见过ipod的官方网站的菜单栏吗? 应该说这个菜单栏做的是相当时髦漂亮的,现在我们就采用firebug去检查这个菜单栏是如何创建起来的,您会发现利用firebug是检查这些html 代码是如此的轻松方便。 操作步骤:在Firefox中打开ipod官方网站。点击firebug控制台面...
2010-05-06 13:59:12 98
原创 firebug指南(五)--- HTML标签详解(转)
引言: HTML标签是firebug中的第二个标签,他分两个视图,左边的视图可以查看html代码,右边的视图又分为三个子面板:样式,布局和DOM,灵活运用html标签中的各种功能,我们很容易就可以了解一个特定网页的组织结构,包括它的CSS,JS,图片等。 接下来介绍一下html的几个主要功能: ·查看HTML元素 ·查看html元素的样式 ...
2010-05-06 13:56:37 114
原创 firebug指南(四)---javascript性能评测和对象跟踪(转)
引言: 本篇将涵盖以下几个主题: ·javascript性能评测器 ·错误跟踪 ·xmlhttprequest对象跟踪 #1.javascript性能评测器 javascript性能评测器是firebug中非常有用的一个功能,它可以计算出javascript代码的执行的一些时间数据(如方法调用次数,执行的时间,平均执行时间等等)...
2010-05-06 13:54:42 98
原创 firebug指南(三)---在firebug中使用日志(转)
控制台标签概览 这个标签主要用来打印日志之用。它也可以在进行javascript调试的时候当作命令行窗口使用(类似Microsoft Visual Studio中的立即窗口(immediate window))。而且使用它的“概览”这个子服务,还可以纪录javascript代码执行时候的一些有用的信息(如方法调用的次数,执行的时间等)。 本部分内容将涵盖下列内容~ ·...
2010-05-06 13:53:35 163
原创 firebug指南(二)---firebug命令行API详解(转)
引言: 命令行是firebug中最有用的功能之一。如果你以前有过使用Visual Studio(简称VS)开发项目的经验,就应该知道你在使用VS进行调试程序的时候,“立即窗口(Immediate window)”和“监视窗口(Watch window)”的有用性。 firebug的命令行类似于VS的立即窗口,你可以在任意时候检查一个特定对象的值,包括在设计时期也可...
2010-05-06 13:52:20 130
原创 firebug指南(一)---概览与安装(转)
这篇指南总共分为五大部分: ·第一部分:firebug概览:简要介绍firebug的一些基本特征,如何安装以及一些注意点。 ·第二部分:logging,trace和commandline(这里译为命令行,以后提到的命令行即为 commandline):这些都是和控制台有关的。在这部分我们将对命令行窗口进行详细的介绍(命令行窗口类似于Visual Studio的立即...
2010-05-06 13:50:50 90
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人