- 浏览: 111077 次
- 性别:
- 来自: 泰安
最新评论
-
bz201:
同意1楼说的jd-gui.exe反编译,你就原形毕露了!
史无前例的java代码混淆方法 -
liwen30678:
fcm915 写道gclzzhui 写道这个不行,修改会出错的 ...
关于SQL2008报表服务远程访问弹出验证的解决方法 -
MyDream83:
请问有种mac加密返回8个字节 跟你这有什么不同
JAVA单向加密(MD5,SHA,MAC) -
fcm915:
你有什么高见?
short,int,long与byte数组之间的转换 -
徐风子:
都09年了,你还在main里面写测试呀。不过java也挺操蛋的 ...
short,int,long与byte数组之间的转换
Lucene.java:
建索引:
Doc.java
建索引:
public class Lucene { private Lucene() {} public static final String INDEX_DIR = "E:\\index"; public static void index(ArrayList list, boolean create) { final File indexDir = new File(INDEX_DIR); Date start = new Date(); try { IndexWriter writer = new IndexWriter(indexDir, new MMAnalyzer(), create); writer.setMergeFactor(100); for (int i=0; i<list.size(); i++){ System.out.println("---i="+i); writer.addDocument(Doc.Document((BasicElement)list.get(i))); } writer.optimize(); writer.close(); Date end = new Date(); System.out.println(end.getTime() - start.getTime() + " total milliseconds"); } catch (IOException e) { System.out.println(e); } } public static ArrayList search(String strContent, String strDistrict,String StrBegin,String strEnd){ ArrayList list = new ArrayList(); try { BooleanQuery query = new BooleanQuery(); StringTokenizer st=null; if(strContent!=null&& !"".equals(strContent)){ st = parseString("content", strContent); while (st.hasMoreTokens()) { String str = "*"+st.nextToken()+"*"; Query queryContent = new WildcardQuery(new Term("content",str)); query.add(queryContent,BooleanClause.Occur.MUST); } } if(strDistrict!=null&& !"".equals(strDistrict)){ st = parseString("district", strDistrict); while (st.hasMoreTokens()) { String str = "*"+st.nextToken()+"*"; Query queryDistrict = new WildcardQuery(new Term("district",str)); query.add(queryDistrict,BooleanClause.Occur.MUST); } } if(StrBegin!=null&& !"".equals(StrBegin) && strEnd!=null&& !"".equals(strEnd)){ RangeQuery queryTime = new RangeQuery(new Term("time",StrBegin), new Term("time",strEnd), true); query.add(queryTime,BooleanClause.Occur.MUST); } System.out.println("query=" + query); Searcher searcher = new IndexSearcher(INDEX_DIR); Hits hits = searcher.search(query); System.out.println("hits.length()=" + hits.length()); for (int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); HashMap map = new HashMap(); map.put("table",doc.get("table")); map.put("pid",doc.get("pid")); //map.put("district",doc.get("district")); //map.put("time",doc.get("time")); System.out.println("doc.get table="+doc.get("table")); list.add(map); } } catch (Exception e) { System.out.println(e); } return list; } public static StringTokenizer parseString(String strField, String strQuery){ StringTokenizer st = null; try { MMAnalyzer analyzer = new MMAnalyzer(); QueryParser parser = new QueryParser(strField, analyzer); Query query = parser.parse(strQuery); st = new StringTokenizer(query.toString(strField).replace('\"', ' ')); }catch (Exception e) { System.out.println(e); } return st; } /*当添加一条新记录时触发该方法,同步增加索引记录*/ public static void insertIndex(BasicElement entity) { try { IndexWriter writer = new IndexWriter(INDEX_DIR, new MMAnalyzer(), false); writer.addDocument(entity); writer.optimize();/*如果速度很慢,删除此行代码*/ writer.close(); System.out.println("insert Index OK!"); } catch (IOException e) { System.out.println(e); } } /*当删除一条记录时触发该方法,同步更新索引*/ public static void deleteIndex(BasicElement entity) { try{ Analyzer analyzer = new StandardAnalyzer(); BooleanQuery query = new BooleanQuery(); QueryParser parserPid = new QueryParser("pid", analyzer); Query queryPid = parserPid.parse(entity.getPid()); query.add(queryPid,BooleanClause.Occur.MUST); QueryParser parserTable = new QueryParser("table", analyzer); Query queryTable = parserTable.parse(entity.getType()); query.add(queryTable,BooleanClause.Occur.MUST); Searcher searcher = new IndexSearcher(INDEX_DIR); Hits hits = searcher.search(query); if (hit.length()>0){ IndexReader reader = IndexReader.open(INDEX_DIR); reader.deleteDocument(hits.id(0)); reader.close(); } } catch (IOException e) { System.out.println(e); } } /*当修改一条记录时触发该方法,同步更新索引*/ public static void modifyIndex(BasicElement entity) { deleteIndex(entity); insertIndex(entity); } /*定时调用该方法,根据记录的修改时间,更新和增加索引记录 ArrayList list是在上次更新索引到现在这段时间内所有修改过的记录*/ public static void updateIndex(ArrayList list) { try{ for(int i=0; i<list.size(); i++){ BasicElement entity = (BasicElement)list.get(i); deleteIndex(entity); } IndexWriter writer = new IndexWriter(INDEX_DIR, new MMAnalyzer(), false); writer.setMergeFactor(100); for (int i=0; i<list.size(); i++){ writer.addDocument(Doc.Document((BasicElement)list.get(i))); } writer.optimize(); writer.close(); } catch (IOException e) { System.out.println(e); } } public static void main(String[] args) { } }
Doc.java
public class Doc { private Doc() {} public static Document Document(BasicElement entity){ String strTable = ""; String strPid = ""; String strDistrict = ""; String strTime = ""; String strContent = ""; if (strTable.equals("type")){ strDistrict = ""; } Document doc = new Document(); doc.add(new Field("table",strTable, Field.Store.YES, Field.Index.TOKENIZED)); doc.add(new Field("pid", strPid, Field.Store.YES, Field.Index.TOKENIZED)); doc.add(new Field("district", strDistrict, Field.Store.NO, Field.Index.TOKENIZED)); doc.add(new Field("time", strTime, Field.Store.NO, Field.Index.TOKENIZED)); doc.add(new Field("content",strContent, Field.Store.NO, Field.Index.TOKENIZED)); //System.out.println("Document.table:"+doc.get("table")); return doc; }
发表评论
-
Cannot create JDBC driver of class 'com.p6spy.engine.spy.P6SpyDriver'
2010-11-17 14:55 4832Cannot create JDBC driver of cl ... -
Jocky混淆JAVA代码(保护你的JAVA项目)
2009-12-30 17:19 1597一、前言 1.1 什么是Jocky? 我们知道,Ja ... -
史无前例的java代码混淆方法
2009-12-30 17:06 4740现在的混淆方法琳琅满目,但每种混淆方法都要用第3方软件,其实混 ... -
short,int,long与byte数组之间的转换
2009-11-06 18:25 2112package com.test; import j ... -
Validator.js 很好用的客户端表单验证
2009-11-06 10:13 82411: /******************** ... -
对js中startWith和endWith的扩展
2009-11-05 09:20 1617<input name="searchCont ... -
jfreechart 生成折线图,饼图,柱状图,堆栈柱状图
2009-04-23 09:30 1183最近公司使用jfreechart来生成统计图,使用了折线图,饼 ... -
hibernate 动态pojo Map
2009-04-21 11:10 2083动态domain,用一个Map来代替对像,把原来domain中 ... -
加载properties文件路径错误问题
2009-04-18 11:10 1454一直用的好好的,突然之间 出错了. 错误是一个从来没有改过的东 ... -
查询及删除重复记录的方法
2009-04-06 13:34 829(一) 1、查找表中多余的重复记录,重复记录是根据单个字段(p ... -
java时间格式大全
2009-03-11 09:15 1058ava.util.*; import java.text.*; ... -
js判断数字,字母,中文
2009-03-10 10:45 2278js判断数字,字母,中 ... -
No value specified解决办法收藏
2009-03-05 13:17 13912当用到了时间等非内置对象时,如果对象为NULL则,会出现此异常 ... -
Map
2009-02-04 15:37 2133Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存 ... -
防止Java反编译的一些常用方法[转帖]
2008-10-31 08:38 1008常用的保护技术 ... -
用Java操作Office 2007
2008-10-24 15:51 1926用Java操作Office 2007 作者 ... -
从Java到Ruby:献给引路人的策略
2008-10-24 15:49 891从Java到Ruby:献给引路 ...
相关推荐
lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
【Lucene 4.7.0 全套JAR包详解】 Lucene是一个开源全文搜索引擎库,由Apache软件基金会开发并维护。它提供了一个高级、灵活的文本搜索API,允许开发者轻松地在应用程序中实现复杂的搜索功能。这次提供的“lucene-...
本压缩包包含的是Lucene 3.5.0版本的全部源码,对于想要深入理解Lucene工作原理、进行二次开发或者进行搜索引擎相关研究的开发者来说,是一份非常宝贵的学习资源。 Lucene 3.5.0是Lucene的一个重要版本,它在3.x...
Lucene是一款强大的全文搜索引擎库,广泛应用于各种数据检索场景。在C#环境下,利用Lucene进行时间区间搜索是提高数据检索效率和精确度的重要手段。本篇将深入探讨如何在C#中实现Lucene的时间区间查询匹配,以及涉及...
《Lucene in Action》是关于Apache Lucene的权威指南,这本书深入浅出地介绍了全文搜索引擎的构建和优化。Lucene是一个高性能、全文本搜索库,它允许开发人员在应用程序中轻松实现复杂的搜索功能。这本书主要面向...
《Annotated Lucene 中文版 Lucene源码剖析》是一本深入探讨Apache Lucene的书籍,专注于源码解析,帮助读者理解这个强大的全文搜索引擎库的工作原理。Lucene是一款开源的Java库,它提供了高效的文本搜索功能,被...
在IT领域,搜索引擎技术是至关重要的,而Lucene作为一个开源全文搜索引擎库,广泛应用于各种文本检索系统中。本文将深入探讨Lucene示例中的BM25相似度计算,旨在帮助初学者理解如何利用Lucene 4.7.1版本构建索引、...
【Lucene 简介】 Lucene 是一个强大的开源全文搜索库,由 Java 编写,主要用于为应用程序添加全文检索功能。它不是一个完整的全文搜索引擎应用,而是一个工具包,允许开发者将其集成到自己的软件中,以实现高效、...
"计算机专业外文翻译(lucene相关)" 本文翻译了论文"Scale-up x Scale-out: A Case Study using Nutch/Lucene",介绍了计算机专业领域中关于Lucene相关的知识点。 Scale-up vs Scale-out 论文中讨论了两个相对...
**Lucene 2.0 API 和 Lucene 3.0 API 深度解析** Lucene 是一个由 Apache 软件基金会开发的全文搜索引擎库,它为开发者提供了在 Java 应用程序中实现高性能、可扩展的全文搜索功能的能力。Lucene 的 API 设计得相当...
**Lucene原理详解** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了一个简单但功能强大的API,用于索引和搜索文本数据,使得开发者可以轻松地在...
《全面解析Lucene jar包:从基础到应用》 在信息技术高速发展的今天,搜索引擎已经成为我们获取信息不可或缺的工具。在Java领域,Lucene作为一个强大的全文搜索引擎库,深受开发者喜爱。本文将详细介绍“lucene所有...
《Lucene in Action 第二版》是一本深入探讨Apache Lucene全文检索库的专业书籍,它在Java开发领域具有很高的权威性。这本书详细介绍了如何利用Lucene进行高效的文本搜索和索引构建,是Java开发者和信息检索爱好者的...
赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...
《Lucene与关系型数据库对比:深度解析与应用探索》 在信息爆炸的时代,数据管理和检索成为了企业乃至个人日常工作中不可或缺的部分。随着技术的发展,不同的数据处理方式应运而生,其中Lucene与关系型数据库作为两...
标题"Lucene资料大全(包括Lucene_in_Action书等)"表明这是一个包含全面Lucene学习资源的集合,其中最显著的是《Lucene_in_Action》这本书。这是一本广泛认可的关于Apache Lucene的权威指南,通常被简称为LIA,它深入...
**Lucene.NET 中文分词技术详解** Lucene.NET 是一个高性能、全文检索库,它是Apache Lucene项目在.NET平台上的实现。作为一个开源的搜索引擎框架,Lucene.NET为开发者提供了强大的文本搜索功能。而在处理中文文档...
Apache Lucene是一个开源全文搜索引擎库,它为Java开发者提供了强大的文本搜索功能。在这个"Lucene 5 主要jar包"中,我们找到了一系列与Lucene 5.0.0相关的jar文件,这些文件是构建和运行基于Lucene的搜索应用程序的...
经典的Lucene实例代码及详细解析以及Lucene结构流程介绍 Lucene是一个功能强大且灵活的开源搜索引擎库,它提供了一个简单易用的API,允许开发者快速构建搜索应用程序。下面将对Lucene的实例代码和结构流程进行详细...