02 2012 档案
摘要:大家知道,lucene中的IndexWriter和IndexReader都是线程安全的类,但是不能出现多多线程绑定多个实例的情况。因此很有必要保证IndexWriter和IndexReader全局只有一个实例子。我们首先写一个类,让他来保证全局只有一个实例,类的接口如下:1 public interface LuceneManager {2 public IndexWriter getIndexWriter() throws CorruptIndexException, LockObtainFailedException, IOException;3 public Inde...
阅读全文
摘要:这 部分内容将介绍三个紧密联系的主题:索引文件的并发访问、IndexReader和IndexWriter的线程安全性,以及Lucene用于避免索引被 破坏而使用的锁机制。通常,Lucene的初学者们对这几个主题都存在一定的误解。而准确地理解这些内容是十分重要的,因为,当索引应用程序同时服务于大 量不同的用户时,或为了满足一些突发性的请求、而需要通过对某些操作进行并行处理时,这些内容会帮助你消除在构建应用程序过程中所遇到的疑问。2.9.1 并发访问的规则Lucene 提供了一些修改索引的方法,例如索引新文档、更新文档和删除文档;在执行这些操作时,为了避免对索引文件造成损坏,需要遵循一些特定的规则
阅读全文
摘要:在删除某个索引的时候,会在索引文件所在的目录下生成一个xx.lock文件,这个文件的生成是在deleteDocuments方法执行时,如果删除完毕不关闭的情况下如下: IndexWriter writer=new IndexWriter(FSDirectory.open(new File(config.getIndexFilePath())),new StandardAnalyzer(Version.LUCENE_CURRENT),MaxFieldLength.UNLIMITED); //writer.deleteAll(); Term term=new Term("NAME&quo
阅读全文
摘要:如果想删除Lucene索引,常常采用的类是IndexWriter,下图描述IndexWriter类删除索引的方法: ok,我来测试这个deleteAll方法是什么效果。首先创建一些索引文件(具体的方法和代码我就此省略),索引文件可以组织结构图如下: 接下来,我们来将索引删除,以前删除索引我都是手动删除,汗~~~~,因为那些索引创建了以后几乎都不改变,因为那些数据都是不动的兴趣点数据。所以我当时也没有写删除索引的方法。下面是我测试删除索引的方法:View Code 1 public void testDeleteIndex(){ 2 POIConfig config=POI...
阅读全文
摘要:Java 6 JVM 参数选项大全(中文版)作者: Ken Wu Email: ken.wug@gmail.com转载本文档请注明来自 Ken Wu`s Blog !本文 是基于最新的 SUN官方 文档 Java SE 6 Hotspot VM Options 编写的译文。主要介绍JVM 中的非稳态选项及其使用说明。为了让读者明白每个选项的含义,作者在原文基础上补充了大量的资料 。因为是初稿,如有描述错误,敬请指正。非稳态 选项使用说明 -XX:+<option> 启用option-XX:-<option> 不启用option-XX:<option>=<
阅读全文
摘要:一、相关概念 基本回收算法 引用计数( Reference Counting ) 比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为 0 的对象。此算法最致命的是无法处理循环引用的问题。 标记 - 清除( Mark-Sweep ) 此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同时,会产生内存碎片。 复制( Copying ) 此算法把内存空间划为两个相等的区域,每次只使用其中一个区域。垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一个
阅读全文
摘要:在Java 5.0之前启动一个任务是通过调用Thread类的start()方法来实现的,任务的提于交和执行是同时进行的,如果你想对任务的执行进行调度或是控制 同时执行的线程数量就需要额外编写代码来完成。5.0里提供了一个新的任务执行架构使你可以轻松地调度和控制任务的执行,并且可以建立一个类似数据库连接 池的线程池来执行任务。这个架构主要有三个接口和其相应的具体类组成。这三个接口是Executor, ExecutorService、ScheduledExecutorService,让我们先用一个图来显示它们的关系:图的左侧是接口,图的右侧是这些接口的具体类。注意Executor是没有直接具体实.
阅读全文
摘要:我测试了一下多字段构造查询,代码如下:try { long start=System.currentTimeMillis(); Directory dic = new SimpleFSDirectory(new File(ILuceneManager.DEFAULT_REGION_LUCENE_INDEX_PATH)); IndexSearcher searcher=new IndexSearcher(dic); //----------设置相似度 //searcher.setSimilarity(new IKSimilarity()); //---------...
阅读全文
摘要:在看这个对象之前,我们要知道BooleanQuery这个对象能干什么。它能干什么呢,它能进行组合查询。大家都知道,一般的高级查询(比如前程无忧的职位搜索应该用到了组合查询)都会用到组合查询。它了组合,它应该是搜索多个条目,每个条目应该是它的Clause。 别的不多说,我们来看看这个BooleanQuery类的主要属性和方法。 /** A Query that matches documents matching boolean combinations of other * queries, e.g. {@link TermQuery}s, {@link PhraseQuery}s or o.
阅读全文
摘要:TermQuery是lucene查询中最基本的一种原子查询,从它的名字Term我们可以看出,它只能针对一个字段进行查询。下面是我测试的一个代码样例: @Test public void testGovenQuery(){ try { String keyword="杭州"; Directory dic=new SimpleFSDirectory(new File(ILuceneManager.DEFAULT_REGION_LUCENE_INDEX_PATH)); IndexSearcher searcher=new IndexSearcher(dic); //------.
阅读全文
摘要:在我使用Hibernate框架查询Oracle spatial空间表的时候,在构建SessionFactory的时候总是报以下错误:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cityDao': Autowiring of methods failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire me
阅读全文
摘要:Struts2中Action的角色有点重叠!上图描述了Struts2架构中的模型、视图和控制器。控制器通过Struts2分发Servlet过滤器(也就是人们常说的拦截器)来实现,模型通过Action实现,视图则通过结果类型和结果组合实现。值栈和OGNL提供了公共的线程和链接,并使得不同组件可以相互集成。Struts2使用了名为依赖注入5——又名控制反转——的技术来降低系统的耦合性。依赖注入可以通过构造器注入,接口注入和setter注入来实现。Struts2中用的是setter注入。这就是说,你只需要提供一个setter,对应的对象就可以被Action使用了。Struts2推荐的依赖注入框架是S
阅读全文
摘要:TCP/IP(Transmission Control Protocol/Internet Protocol的简写,中文译名为传输控制协议/互联网络协议)协议是Internet最基本的协议,简单地说,就是由底层的IP协议和TCP协议组成的。TCP/IP协议是一组包括TCP(传输控制协议)协议和IP(网际协议)协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。传统7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每
阅读全文
摘要:今天用wsimport命令生成WebService客户端代码总是失败,搞的我很郁闷,错误信息如下:C:\Users\DELL>wsimport -d com -keep http://10.3.9.86:8080/GeoWS/CityQuery?wsdlparsing WSDL...[ERROR] the following naming conflicts occurred: com.geostar.commonws.city.impl.CityServiceImpl line 1 of http://10.3.9.86:8080/GeoWS/CityQuery?wsdl我尝试了wsi
阅读全文