- 浏览: 123944 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (47)
- 前端开发 (11)
- 数据库 (12)
- mongodb mongo 数据库 操作 (1)
- java (31)
- sping (6)
- hibernate (6)
- 博客 (1)
- 借鉴 (1)
- lhgdialog (1)
- jequery (3)
- struts2 (8)
- CXF (1)
- WEBSERVICE (3)
- SSH (9)
- 工具类 (4)
- email (1)
- 邮件 (1)
- 发送 (1)
- db2查询 (2)
- 日期对比 (1)
- lucence (1)
- js (2)
- 浮动 (1)
- 弹出层 (1)
- oracle (6)
- mysql (2)
- 进程 (1)
- windows (1)
- axis (1)
- 存储过程 (1)
- 游标 (1)
- oracle,游标 (1)
最新评论
-
xiangyongit:
新手看不懂呀,能不能稍微加些备注
js实现点击复制 -
小二黑:
mark 0000
dwr基于struts2和spring2.5的配置详解 -
QuarterLifeForJava:
不错,虽然有点少 。谢谢分享。
SSH框架常用一些工具类整理
一、首先是从数据库查询数据并添加索引
二、从索引中查询数据
以上返回Document的集合,再将每个Document中值遍历
/** * 写入数据库索引 * @param sql 查询的sql语句 * @param indexPath 保存索引的硬盘绝对路径 * @return */ private int createDBIndex(String sql,String indexPath){ log.info("DBIndex is creating,wait a moment!"); long start=new Date().getTime(); IndexWriter writer; Directory directory = null; int numberindex = 0; try { File indexFile = new File(indexPath); directory = new SimpleFSDirectory(indexFile); writer = new IndexWriter(directory, new IKAnalyzer(),true, IndexWriter.MaxFieldLength.LIMITED); ResultSet rs = getResultSet(sql); while (rs.next()) { Document doc = new Document(); String PATIENT_NAME = rs.getString("PATIENT_NAME") == null?"":rs.getString("PATIENT_NAME"); String PATIENT_SEX = rs.getString("PATIENT_SEX") == null ? "-1":rs.getString("PATIENT_SEX"); String PATIENT_AGE = rs.getString("PATIENT_AGE") == null ? "0":rs.getString("PATIENT_AGE"); String SENDED_DEPT = rs.getString("SENDED_DEPT") == null ? "":rs.getString("SENDED_DEPT"); String SENDED_DOCTOR = rs.getString("SENDED_DOCTOR") == null ?"":rs.getString("SENDED_DOCTOR"); String BODY_OF_CASE = rs.getString("BODY_OF_CASE") == null ? "":rs.getString("BODY_OF_CASE"); String SENDED_HOSPITAL = rs.getString("SENDED_HOSPITAL") == null ? "":rs.getString("SENDED_HOSPITAL"); String CHECK_METHOD = rs.getString("CHECK_METHOD")==null ? "":rs.getString("CHECK_METHOD"); String REPORT_DOCNAME = rs.getString("REPORT_DOCNAME")==null ? "":rs.getString("REPORT_DOCNAME"); String AUDIT_DOCNAME = rs.getString("AUDIT_DOCNAME")==null?"":rs.getString("AUDIT_DOCNAME"); String REPORT_DATE = rs.getString("REPORT_DATE")==null?"":rs.getString("REPORT_DATE"); String POSITIVE_FLAG = rs.getString("POSITIVE_FLAG")==null?"":rs.getString("POSITIVE_FLAG"); String REPORT_DESC_TXT = rs.getString("REPORT_DESC_TXT")==null?"":rs.getString("REPORT_DESC_TXT"); String REPORT_DIAG_TXT = rs.getString("REPORT_DIAG_TXT")==null?"":rs.getString("REPORT_DIAG_TXT"); String CLINIC_DESC = rs.getString("CLINIC_DESC")==null?"":rs.getString("CLINIC_DESC"); String CLINIC_DIAG = rs.getString("CLINIC_DIAG")==null?"":rs.getString("CLINIC_DIAG"); String CLINICAL_ADVICE = rs.getString("CLINIC_ADVICE")==null?"":rs.getString("CLINIC_ADVICE"); String HOSPITAL_CARDID = rs.getString("HOSPITAL_CARDID")==null?"":rs.getString("HOSPITAL_CARDID"); String CLINIC_HOSPITALNO = rs.getString("CLINIC_HOSPITALNO")==null?"":rs.getString("CLINIC_HOSPITALNO"); String FTPPATH = rs.getString("FTPPATH")==null?"":rs.getString("FTPPATH"); String SENDED_DATE = rs.getString("SENDED_DATE")==null?"":rs.getString("SENDED_DATE"); doc.add(new Field("PATIENT_NAME", PATIENT_NAME, Field.Store.YES,Field.Index.ANALYZED)); doc.add(new Field("PATIENT_SEX", PATIENT_SEX,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("PATIENT_AGE", PATIENT_AGE,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("SENDED_DEPT", SENDED_DEPT,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("SENDED_DOCTOR",SENDED_DOCTOR,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("BODY_OF_CASE",BODY_OF_CASE,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("SENDED_HOSPITAL",SENDED_HOSPITAL,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("CHECK_METHOD", CHECK_METHOD,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("REPORT_DOCNAME", REPORT_DOCNAME,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("AUDIT_DOCNAME", AUDIT_DOCNAME,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("REPORT_DATE",REPORT_DATE,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("POSITIVE_FLAG",POSITIVE_FLAG,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("REPORT_DESC_TXT",REPORT_DESC_TXT,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("REPORT_DIAG_TXT",REPORT_DIAG_TXT,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("CLINIC_DESC",CLINIC_DESC,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("CLINIC_DIAG",CLINIC_DIAG,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("CLINICAL_ADVICE",CLINICAL_ADVICE,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("HOSPITAL_CARDID",HOSPITAL_CARDID,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("CLINIC_HOSPITALNO",CLINIC_HOSPITALNO,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("FTPPATH",FTPPATH,Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("SENDED_DATE",SENDED_DATE,Field.Store.YES, Field.Index.ANALYZED)); writer.addDocument(doc); } numberindex = writer.numDocs(); writer.optimize(); writer.close(); if(IndexWriter.isLocked(directory)){ IndexWriter.unlock(directory); } long end=new Date().getTime(); log.info("Opration sql: \n " + sql + " \n success,Create index " + numberindex + " sucess,spend time is " + (end-start) + " ms!"); } catch (Exception e) { e.printStackTrace(); log.info("Create index failed......"); } return numberindex; }
二、从索引中查询数据
/** * 从本地索引文件中搜索相关关键字 * @param indexDir 所要查询的索引文件保存地址 * @param fieldString 需要搜索出来的字段 * @param search 搜索关键字的字符串数组 * @throws CorruptIndexException * @throws IOException * @throws ParseException * return List<Document> */ @SuppressWarnings({ "deprecation", "resource" }) public List<Document> searchData(File indexDir,String[] fieldString, List<ClassicCasesKeyWords> search) throws CorruptIndexException, IOException, ParseException{ List<Document> docList = new ArrayList<Document>(); long start=new Date().getTime(); IndexSearcher searcher= new IndexSearcher(FSDirectory.open(indexDir),true); BooleanQuery bQuery = new BooleanQuery(); //组合查询 WildcardQuery w1 = null; for (int i = 0; i < fieldString.length; i++) { for (int j = 0; j < search.size(); j++) { w1 = new WildcardQuery(new Term(fieldString[i], "*" +search.get(j).getKeyName() + "*"));//加通配符才能正常查询完整的模糊查询数据 bQuery.add(w1,BooleanClause.Occur.SHOULD);//or关系 } } TopDocs topDocs = searcher.search(bQuery,TOP_NUM);// ScoreDoc[] hits = topDocs.scoreDocs; for (int j = 0; j < hits.length; j++) { int DocId = hits[j].doc; Document document = searcher.doc(DocId); docList.add(document); } long end=new Date().getTime(); // log.info("\n\n Query "+docList.size()+" result on "+(end-start)+" ms!"); System.out.println("\n\n Query "+docList.size()+" result on "+(end-start)+" ms!"); return docList; }
以上返回Document的集合,再将每个Document中值遍历
document.getField("BODY_OF_CASE").stringValue();
- IKAnalyzer2012.jar (1.1 MB)
- 下载次数: 2
- lucene-highlighter-3.6.2.jar (87.1 KB)
- 下载次数: 2
- lucene-memory-3.6.2.jar (29.1 KB)
- 下载次数: 1
- lucene-analyzers-3.6.2.jar (1.1 MB)
- 下载次数: 1
- lucene-core-3.6.2.jar (1.5 MB)
- 下载次数: 1
发表评论
-
myeclipse根据wsdl文件生成webservice服务端
2017-05-22 11:38 1158java开发会经常涉及到接口开发,有时候会涉及调用对方提供 ... -
spring+mybatis+mysql示例
2017-03-02 14:06 555简单的增删查改spring + mybatis + ... -
oracle存储过程游标遍历
2016-10-21 10:23 547create or replace procedure PR ... -
oracle建游标变量包,且在存储过程中使用
2016-10-21 10:22 476--建包 createorreplacepackage P ... -
java调用存储过程并封装成map
2016-10-21 10:20 1940public List<Map<String , ... -
ORA-01033:oracle初始化或者关闭错误的处理方法
2016-10-21 10:16 7901、开始-运行 cmd; 2、 sqlplus /nolo ... -
oracle存储过程初入门示例
2016-06-22 15:30 570create or replace procedure te ... -
javaweb工程服务器配置域名访问
2016-02-03 16:28 32141、申请域名: 例:www.baidu.com 2、apa ... -
java调用webservice接口
2016-01-19 11:56 0package com.mvc.controller; ... -
maven搭建javaweb项目
2015-06-19 15:08 544见链接:http://www.cnblogs.com/xdp- ... -
java数据库连接池操作
2015-06-19 13:57 717一、应用程序直接获取 ... -
BigDecimal在实际项目的应用及遇到的问题
2015-01-28 11:46 682BigDecimal在实际项目的应用及遇到的问题 2013-0 ... -
java操作系统的进程
2014-06-13 14:07 7261、windows下调用dos命令,很简单的java代码: ... -
DB2、oracle和mysql语句的日期对比及字符串截取
2014-06-13 10:07 3379一、在数据库查询中,我们会经验遇到日期的对比,在常用数据库中, ... -
dwr基于struts2和spring2.5的配置详解
2014-03-27 14:08 1186第一步:web.xml配置; <servlet> ... -
java字符串过滤回车和换行符
2014-01-14 15:20 22920//第一种方式 import java.util.reg ... -
oracle常用功能语句
2013-12-23 14:25 720<!--新建用户--> create ... -
java获取随机数
2013-12-17 16:50 17201、获取num个不大于range的随机数 /** * ... -
db2日期对比的sql,并读取xml字段数据
2013-12-06 10:47 827date(char(XML2CLOB( xmlquery( ... -
java打开拼接的rul链接并带上参数
2013-11-26 09:50 1062//判断当前系统是否支持Java AWT Desktop ...
相关推荐
本文将深入探讨Lucene.NET的多字段查询、建立索引以及组合查询等核心知识点。 一、Lucene.NET基础 1. **建立索引**:Lucene.NET的核心功能之一是创建全文索引,这使得快速检索成为可能。首先,我们需要创建一个`...
为此,李晓丽和杜振龙在《基于Lucence的个性化搜索引擎研究》一文中提出了一种新的个性化搜索引擎方案。该方案通过分析用户的Cookie文件来构建用户兴趣模型,并以此指导搜索引擎提供更加精准的搜索结果。 #### 关键...
### Lucene查询实现详解 #### 一、Lucene简介 Lucene是一款高性能、全功能的文本搜索引擎库。它提供了一套完整的搜索应用解决方案,包括全文检索、文档索引、相似度评分等功能。Lucene的核心是索引和搜索,开发者...
标题和描述中提到的知识点是关于Lucene全文检索数据库的应用示例,特别是在处理大量数据和多表查询时的性能优化。下面将详细阐述Lucene的基本概念、如何在Java环境中使用Lucene进行全文检索,以及结合MySQL数据库的...
HiGo垂直搜索引擎开源版系统需要独立服务器支持,也可以用你本地电脑做服务器来调试,基于lucence mysql asp.net,支持数据索引,中文分词,模糊查询,爬虫采集,精确采集规则模式和模糊采集规则模式相混合(模糊采集...
每个文档由一个或多个字段(Field)组成,每个字段有自己的类型(如文本、数字、日期等)。 - **倒排索引**: Lucene的核心数据结构,它将每个词映射到包含该词的文档列表,使得通过词查找文档变得高效。 **2. ...
- 多字段搜索:支持在一个文档的多个字段上进行查询。 - 断词查询(Wildcard Query):允许用户使用通配符进行部分匹配搜索。 - 范围查询(Range Query):可以限制搜索结果在特定的数值范围或日期范围内。 - ...
2. 多字段搜索:可以在多个字段上同时进行搜索,提高检索的灵活性。 3. 分片与分布式搜索:大型应用中,Lucene可以通过分片技术将索引分散在多台机器上,实现分布式搜索。 4. 自定义分析器:根据实际需求,可以...
HiGo垂直搜索引擎开源版系统需要独立服务器支持,也可以用你本地电脑做服务器来调试,基于lucence mysql asp.net, 支持数据索引,中文分词,模糊查询,爬虫采集,精确采集规则模式和模糊采集规则模式相混合(模糊...
Lucence的描述以及重要的几个方法详解说明,Lucence的应用以及实例
在实际使用中,你可能需要根据自己的数据源和需求进行相应的调整,比如更改Analyzer类型、添加新的字段或处理查询结果的逻辑。 总之,Lucene 是一个强大的全文检索工具,通过掌握其核心概念和API,可以构建出高效的...
对于Lucence 4.6.0版本,这些JAR文件涵盖了核心库、分析器、查询解析器、索引工具、存储组件等多个方面的内容。下面我们将详细探讨这些知识点: 1. **Lucence核心库**:这是Lucence的核心组件,包含索引和搜索的...
SpringBoot整合Lucene是一个常见的需求,特别是在构建高性能的全文搜索引擎时。Lucene是Apache软件基金会...同时,可以考虑使用更高级的搜索引擎库,如Elasticsearch,它基于Lucene但提供了更多的管理和集群扩展能力。
本文将深入探讨Lucene 3.6.1版本,结合“庖丁解牛”分词器以及其在数据库表索引、文件索引及分页搜索的应用,为初学者提供一套完整的入门教程。 一、Lucene 3.6.1 概述 Lucene 3.6.1是Apache软件基金会的开源项目...
lucence学习笔记,中文的,适用于初学者学习,知识点案例较多。
在 Lucene 中,一个文档是由多个字段组成的,每个字段代表了数据的一个方面。例如,一个新闻文章可以有标题、作者、内容等字段。每个字段都可以被设置不同的分析器(Analyzer),以进行分词和其他预处理操作。 **3....
每个文档由多个字段(Field)组成,每个字段有其特定的属性,如文本、标题等。 3. **Analyzer**:Analyzer负责将输入的文本分解为可搜索的词项(Token)。这包括了分词、去除停用词、词形还原等一系列预处理操作。 ...