- 浏览: 32640 次
- 性别:
- 来自: 沈阳
最新评论
public void appendIndex(TInformationBmsVO informationVO, String path) throws IOException {
String indexFile = path + "file\\temp\\upload\\data\\index";
String scourceFile = path + informationVO.getFFilepathInformation();
String fileContent = "";
IndexWriter writer=null;
try {
Analyzer analyzer = new IKAnalyzer();
Directory directory=FSDirectory.open(new File(indexFile));
IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_36,analyzer);
iwc.setOpenMode(OpenMode.APPEND);
writer=new IndexWriter(directory, iwc);
Document doc=null;
File file = new File(scourceFile);
if(file.isFile()){
if(file.getName() != null && (file.getName().trim().toLowerCase().endsWith(".doc") || file.getName().trim().toLowerCase().endsWith(".docx") || file.getName().trim().toLowerCase().endsWith(".xls") || file.getName().trim().toLowerCase().endsWith(".xlsx") || file.getName().trim().toLowerCase().endsWith(".txt") || file.getName().trim().toLowerCase().endsWith(".ppt") || file.getName().trim().toLowerCase().endsWith(".pptx") || file.getName().trim().toLowerCase().endsWith(".pdf"))){
fileContent = this.readAllFileType(scourceFile);
}
doc=new Document();
doc.add(new Field("id",String.valueOf(System.currentTimeMillis()), Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("content",file.getName() + fileContent, Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("fileName",file.getName(),Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("path",file.getAbsolutePath(),Field.Store.YES,Field.Index.NOT_ANALYZED));
writer.addDocument(doc);
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(writer!=null){
writer.close();
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
List<String> fileNameList = new Vector<String>();
String indexFile = informationVO.getTemp_field11() + "\\index";
IndexReader reader = null;
Directory directory = null;
try {
Analyzer analyzer = new IKAnalyzer();
directory=FSDirectory.open(new File(indexFile));
reader =IndexReader.open(directory);
IndexSearcher searcher=new IndexSearcher(reader);
QueryParser parser=new QueryParser(Version.LUCENE_36,"content",analyzer);
parser.setDefaultOperator(QueryParser.AND_OPERATOR);
Query query=parser.parse(informationVO.getTemp_field10().trim());
TopDocs tds=searcher.search(query,100);
ScoreDoc[] sds=tds.scoreDocs;
for(ScoreDoc sd:sds){
Document d = searcher.doc(sd.doc);
if(!fileNameList.contains(d.get("fileName"))){
fileNameList.add(d.get("fileName"));
}
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
finally{
try {
reader.close();
directory.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return fileNameList;
/**
* 删除索引
* @param informationVO
* @throws IOException
*/
public void deleteIndex(TInformationBmsVO informationVO, String path)throws IOException{
String deleteFileName = informationVO.getFFilepathInformation();
deleteFileName = deleteFileName.substring(deleteFileName.lastIndexOf("\\") + 1);
String indexFile = path + "file\\temp\\upload\\data\\index";
IndexReader reader= IndexReader.open(FSDirectory.open(new File(indexFile)), false);
Document doc = null;
int sum = reader.numDocs();
String indexFileName = "";
for(int i = 0; i < sum; i ++){
doc = reader.document(i);
indexFileName = doc.get("fileName");
if(deleteFileName != null && indexFileName != null && deleteFileName.equals(indexFileName)){
Term term1=new Term("id",doc.get("id"));
reader.deleteDocuments(term1);
}
}
reader.close();
}
/**
* 更新索引
* @param informationVO
* @param path 工程绝对路径
* @throws IOException
*/
@SuppressWarnings("deprecation")
public void updateIndex(TInformationBmsVO informationVO, String path, String sourceFileName)throws IOException{
//索引路径
Document doc = null;
IndexWriter writer = null;
String indexFile = path + "file\\temp\\upload\\data\\index";
String newFileName = informationVO.getFFilepathInformation();
File file = new File(newFileName);
String fileContent = "";
Analyzer analyzer = new IKAnalyzer();
try {
Directory directory = FSDirectory.open(new File(indexFile));
IndexWriterConfig writerConfig = new IndexWriterConfig(Version.LUCENE_36, analyzer);
writerConfig.setOpenMode(OpenMode.APPEND);
writer = new IndexWriter(directory, writerConfig);
String sourceId = this.queryIdBySourceFile(path, sourceFileName);
doc = new Document();
fileContent = this.readAllFileType(path + "file\\temp\\upload\\data\\" + file.getName());
doc.add(new Field("id", String.valueOf(System.currentTimeMillis()), Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("content",file.getName() + fileContent, Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("fileName",file.getName(),Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("path",file.getAbsolutePath(),Field.Store.YES,Field.Index.NOT_ANALYZED));
Term term = new Term("id", sourceId);
writer.updateDocument(term, doc);
writer.optimize();
writer.close();
directory.close();
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
if(writer!=null){
writer.close();
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 通过原文件名查找索引id
* @param fileName
* @return
*/
public String queryIdBySourceFile(String path, String fileName){
fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);
String indexFile = path + "file\\temp\\upload\\data\\index";
IndexReader reader;
try {
reader = IndexReader.open(FSDirectory.open(new File(indexFile)), false);
Document doc = null;
int sum = reader.numDocs();
String indexFileName = "";
for(int i = 0; i < sum; i ++){
doc = reader.document(i);
indexFileName = doc.get("fileName");
if(fileName != null && indexFileName != null && fileName.equals(indexFileName)){
reader.close();
return doc.get("id");
}
}
reader.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
String indexFile = path + "file\\temp\\upload\\data\\index";
String scourceFile = path + informationVO.getFFilepathInformation();
String fileContent = "";
IndexWriter writer=null;
try {
Analyzer analyzer = new IKAnalyzer();
Directory directory=FSDirectory.open(new File(indexFile));
IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_36,analyzer);
iwc.setOpenMode(OpenMode.APPEND);
writer=new IndexWriter(directory, iwc);
Document doc=null;
File file = new File(scourceFile);
if(file.isFile()){
if(file.getName() != null && (file.getName().trim().toLowerCase().endsWith(".doc") || file.getName().trim().toLowerCase().endsWith(".docx") || file.getName().trim().toLowerCase().endsWith(".xls") || file.getName().trim().toLowerCase().endsWith(".xlsx") || file.getName().trim().toLowerCase().endsWith(".txt") || file.getName().trim().toLowerCase().endsWith(".ppt") || file.getName().trim().toLowerCase().endsWith(".pptx") || file.getName().trim().toLowerCase().endsWith(".pdf"))){
fileContent = this.readAllFileType(scourceFile);
}
doc=new Document();
doc.add(new Field("id",String.valueOf(System.currentTimeMillis()), Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("content",file.getName() + fileContent, Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("fileName",file.getName(),Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("path",file.getAbsolutePath(),Field.Store.YES,Field.Index.NOT_ANALYZED));
writer.addDocument(doc);
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(writer!=null){
writer.close();
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
List<String> fileNameList = new Vector<String>();
String indexFile = informationVO.getTemp_field11() + "\\index";
IndexReader reader = null;
Directory directory = null;
try {
Analyzer analyzer = new IKAnalyzer();
directory=FSDirectory.open(new File(indexFile));
reader =IndexReader.open(directory);
IndexSearcher searcher=new IndexSearcher(reader);
QueryParser parser=new QueryParser(Version.LUCENE_36,"content",analyzer);
parser.setDefaultOperator(QueryParser.AND_OPERATOR);
Query query=parser.parse(informationVO.getTemp_field10().trim());
TopDocs tds=searcher.search(query,100);
ScoreDoc[] sds=tds.scoreDocs;
for(ScoreDoc sd:sds){
Document d = searcher.doc(sd.doc);
if(!fileNameList.contains(d.get("fileName"))){
fileNameList.add(d.get("fileName"));
}
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
finally{
try {
reader.close();
directory.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return fileNameList;
/**
* 删除索引
* @param informationVO
* @throws IOException
*/
public void deleteIndex(TInformationBmsVO informationVO, String path)throws IOException{
String deleteFileName = informationVO.getFFilepathInformation();
deleteFileName = deleteFileName.substring(deleteFileName.lastIndexOf("\\") + 1);
String indexFile = path + "file\\temp\\upload\\data\\index";
IndexReader reader= IndexReader.open(FSDirectory.open(new File(indexFile)), false);
Document doc = null;
int sum = reader.numDocs();
String indexFileName = "";
for(int i = 0; i < sum; i ++){
doc = reader.document(i);
indexFileName = doc.get("fileName");
if(deleteFileName != null && indexFileName != null && deleteFileName.equals(indexFileName)){
Term term1=new Term("id",doc.get("id"));
reader.deleteDocuments(term1);
}
}
reader.close();
}
/**
* 更新索引
* @param informationVO
* @param path 工程绝对路径
* @throws IOException
*/
@SuppressWarnings("deprecation")
public void updateIndex(TInformationBmsVO informationVO, String path, String sourceFileName)throws IOException{
//索引路径
Document doc = null;
IndexWriter writer = null;
String indexFile = path + "file\\temp\\upload\\data\\index";
String newFileName = informationVO.getFFilepathInformation();
File file = new File(newFileName);
String fileContent = "";
Analyzer analyzer = new IKAnalyzer();
try {
Directory directory = FSDirectory.open(new File(indexFile));
IndexWriterConfig writerConfig = new IndexWriterConfig(Version.LUCENE_36, analyzer);
writerConfig.setOpenMode(OpenMode.APPEND);
writer = new IndexWriter(directory, writerConfig);
String sourceId = this.queryIdBySourceFile(path, sourceFileName);
doc = new Document();
fileContent = this.readAllFileType(path + "file\\temp\\upload\\data\\" + file.getName());
doc.add(new Field("id", String.valueOf(System.currentTimeMillis()), Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("content",file.getName() + fileContent, Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("fileName",file.getName(),Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("path",file.getAbsolutePath(),Field.Store.YES,Field.Index.NOT_ANALYZED));
Term term = new Term("id", sourceId);
writer.updateDocument(term, doc);
writer.optimize();
writer.close();
directory.close();
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
if(writer!=null){
writer.close();
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 通过原文件名查找索引id
* @param fileName
* @return
*/
public String queryIdBySourceFile(String path, String fileName){
fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);
String indexFile = path + "file\\temp\\upload\\data\\index";
IndexReader reader;
try {
reader = IndexReader.open(FSDirectory.open(new File(indexFile)), false);
Document doc = null;
int sum = reader.numDocs();
String indexFileName = "";
for(int i = 0; i < sum; i ++){
doc = reader.document(i);
indexFileName = doc.get("fileName");
if(fileName != null && indexFileName != null && fileName.equals(indexFileName)){
reader.close();
return doc.get("id");
}
}
reader.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
发表评论
-
百度地图和ztree开发电子围栏功能
2016-09-29 09:27 4824jsp <%@ page language=" ... -
Oracle11g Enterprise Manager配置失败
2014-04-29 11:20 2572Win7先安装oracle 11g时,安装检测到系统的主 IP ... -
java弹窗导入导出文件
2014-03-24 11:42 1536package com.action.frame; impo ... -
jsp访问上级窗口元素
2014-04-29 11:22 444opener.document.getElementById( ... -
页面关闭IE触发事件方法
2013-09-30 09:56 595function window.onbeforeunload( ... -
页面右下角消息提示
2013-09-29 14:05 497<%@ page language="java ... -
oracle 日期列表
2013-09-29 12:52 524获取某个时间段之间的月份列表(示例返回2009-03到2010 ... -
倒计时
2013-09-24 10:01 371//提交 function doSubmit(){ ... -
oracle11G 最新驱动包
2013-09-24 10:00 702oracle11G 最新驱动包 解决与Spring冲突问题 ... -
获取第几天后的日期
2013-09-16 09:23 595Calendar cal = Calendar.getInst ... -
web工程下获取properties文件
2013-09-16 09:19 566String propertiesPath = getClas ... -
javamail
2013-09-16 09:15 558final SendMail sendmail = new S ... -
java根据年和周获取当前的日期时间段
2013-09-16 09:10 1305String[] dates = new String[7]; ... -
JSP判断日期间隔天数
2013-07-15 11:14 636var temp_field1 = $("#temp ... -
dtree不选中子节点处理
2013-05-17 10:35 1307//dtree.js 208行(chks[i].checked ... -
IE8下JS插入表格
2013-05-17 10:25 694//IE8下使用JS插入JSP表格 var tbl = do ... -
JSP选项卡显示
2013-05-17 10:22 2024<%@ page language="java ... -
JSP样式实例
2013-05-10 15:59 677<%@ page contentType="t ... -
Oracle表空间和用户创建赋权限
2013-05-10 15:54 670--RLDM CREATE TABLESPACE RLDM D ... -
hibernate oracle 主键递增
2013-05-10 15:47 492<?xml version="1.0" ...
相关推荐
lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....
Lucene是一款强大的全文搜索引擎库,广泛应用于各种数据检索场景。在C#环境下,利用Lucene进行时间区间搜索是提高数据检索效率和精确度的重要手段。本篇将深入探讨如何在C#中实现Lucene的时间区间查询匹配,以及涉及...
【Lucene 4.7.0 全套JAR包详解】 Lucene是一个开源全文搜索引擎库,由Apache软件基金会开发并维护。它提供了一个高级、灵活的文本搜索API,允许开发者轻松地在应用程序中实现复杂的搜索功能。这次提供的“lucene-...
本压缩包包含的是Lucene 3.5.0版本的全部源码,对于想要深入理解Lucene工作原理、进行二次开发或者进行搜索引擎相关研究的开发者来说,是一份非常宝贵的学习资源。 Lucene 3.5.0是Lucene的一个重要版本,它在3.x...
《Lucene in Action 第二版》是一本深入探讨Apache Lucene全文检索库的专业书籍,它在Java开发领域具有很高的权威性。这本书详细介绍了如何利用Lucene进行高效的文本搜索和索引构建,是Java开发者和信息检索爱好者的...
在IT领域,搜索引擎技术是至关重要的,而Lucene作为一个开源全文搜索引擎库,广泛应用于各种文本检索系统中。本文将深入探讨Lucene示例中的BM25相似度计算,旨在帮助初学者理解如何利用Lucene 4.7.1版本构建索引、...
《Lucene与关系型数据库对比:深度解析与应用探索》 在信息爆炸的时代,数据管理和检索成为了企业乃至个人日常工作中不可或缺的部分。随着技术的发展,不同的数据处理方式应运而生,其中Lucene与关系型数据库作为两...
赠送jar包:lucene-core-7.2.1.jar; 赠送原API文档:lucene-core-7.2.1-javadoc.jar; 赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene...
**Lucene.NET 中文分词技术详解** Lucene.NET 是一个高性能、全文检索库,它是Apache Lucene项目在.NET平台上的实现。作为一个开源的搜索引擎框架,Lucene.NET为开发者提供了强大的文本搜索功能。而在处理中文文档...
赠送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 jar包:从基础到应用》 在信息技术高速发展的今天,搜索引擎已经成为我们获取信息不可或缺的工具。在Java领域,Lucene作为一个强大的全文搜索引擎库,深受开发者喜爱。本文将详细介绍“lucene所有...
Apache Lucene是一个开源全文搜索引擎库,它为Java开发者提供了强大的文本搜索功能。在这个"Lucene 5 主要jar包"中,我们找到了一系列与Lucene 5.0.0相关的jar文件,这些文件是构建和运行基于Lucene的搜索应用程序的...
**Lucene原理详解** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了一个简单但功能强大的API,用于索引和搜索文本数据,使得开发者可以轻松地在...
在信息检索和存储系统中,Lucene是一个开源的全文搜索引擎库,广泛应用于各种需要全文搜索功能的软件项目中。为了高效地处理和检索存储的词项(term),Lucene使用了FST(有限状态转换器,Finite State Transducer)...
**基于Lucene技术的增量索引** 在信息技术领域,全文搜索引擎是处理大量数据查询的关键工具。Apache Lucene是一个开源的全文检索库,被广泛应用于构建高效、可扩展的搜索功能。本文将深入探讨如何利用Lucene实现...
为了在C#中使用Lucene,我们需要借助.NET上的Lucene.NET,这是一个与Java Lucene兼容的.NET框架版本。 接下来,我们探讨C#调用Lucene的步骤: 1. **引入Lucene库**:在C#项目中,首先需要添加对Lucene.NET的引用。...
### Lucene对XML文档建立索引的技术解析与实践 #### 一、引言 随着互联网技术的迅猛发展,非结构化数据(如XML文档)在企业和组织中的应用日益广泛。如何高效地处理这些非结构化的数据,特别是进行快速检索成为了一...
【标题】"lucene的jar包,欢迎下载"所涉及的知识点主要集中在Lucene这个开源全文搜索引擎库上。Lucene是Apache软件基金会的顶级项目,它是一个高性能、全文本搜索库,提供了完整的搜索功能,包括索引、查询、排序等...