package cn.tz.lucene;

import java.io.File;
import java.util.ArrayList;
import java.util.List; import org.apache.commons.io.FileUtils;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.LongField;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;
import org.wltea.analyzer.lucene.IKAnalyzer; public class IndexManagerTest { @Test
public void testIndexCreate() throws Exception{
//采集文件系统中的文档数据到Lucene中
//创建文档列表
List<Document> docList=new ArrayList<Document>();
//指定文件目录
File dir=new File("C:\\Users\\admin\\searchsource");
//循环文件夹
for(File file:dir.listFiles()){
String fileName = file.getName();
String fileContent=FileUtils.readFileToString(file);
Long fileSize=FileUtils.sizeOf(file);
//创建文档对象
Document document=new Document();
TextField namefield=new TextField("fileName",fileName,Store.YES);
TextField contentField=new TextField("fileContent",fileContent,Store.YES);
LongField sizeField=new LongField("fileSize",fileSize,Store.YES);
//LongField
document.add(namefield);
document.add(contentField);
document.add(sizeField);
docList.add(document);
} //创建分词器Analyzer
// Analyzer analyzer=new StandardAnalyzer(); //采用第三方的中文分词器 IKAnalyzer
Analyzer analyzer=new IKAnalyzer();
//指定索引和文档的存储目录
FSDirectory desFile=FSDirectory.open(new File("d:\\lucene"));
//创建写对象的初始化对象
IndexWriterConfig config=new IndexWriterConfig(Version.LUCENE_4_10_3,analyzer);
//创建索引和文档的写对象
IndexWriter writer=new IndexWriter(desFile,config);
//将文档 加到索引和文档的写对象中
for(Document doc:docList){
writer.addDocument(doc);
}
//提交
writer.commit();
//关闭流
writer.close();
} @Test
public void testIndexDel() throws Exception{
Analyzer analyzer=new IKAnalyzer();
FSDirectory dir=FSDirectory.open(new File("d:\\lucene"));
IndexWriterConfig config=new IndexWriterConfig(Version.LUCENE_4_10_3, analyzer);
IndexWriter writer=new IndexWriter(dir, config); //删除所有索引
//writer.deleteAll(); //删除指定索引(根据域删除)
//Term("域名","搜索的关键字")
writer.deleteDocuments(new Term("fileName","apache"));
//提交
writer.commit();
//关闭
writer.close(); } /**
* 更新操作<br>:
* <li>按照Term进行指定域搜索关键字,如果查到记录就删除,然后将更新后的内容重新生成Document对象</li>
* <li>如果没有查到记录,则直接将更新后的内容添加一个Document对象</li>
*/
@Test
public void testIndexUpdate() throws Exception{
Analyzer analyzer=new IKAnalyzer();
//存储目录
FSDirectory dir=FSDirectory.open(new File("d:\\lucene"));
IndexWriterConfig config=new IndexWriterConfig(Version.LUCENE_4_10_3, analyzer);
IndexWriter writer=new IndexWriter(dir,config); //按照fileName域进行搜索关键字"web"
Term term=new Term("fileName","哦哦"); Document doc=new Document();
doc.add(new TextField("fileName","not exit",Store.YES));
doc.add(new LongField("fileSize",100L,Store.YES));
doc.add(new StringField("fileContent", "egfao容", Store.YES));
//更新
writer.updateDocument(term, doc);
//提交
writer.commit();
//关闭
writer.close();
}
}

  

Lucene——索引的创建、删除、修改的更多相关文章

  1. hive 学习系列二(数据库的创建删除修改) 拿走,不谢。

    database 相当于一个目录或者命名空间,用来更好地进行表的管理 在hdfs 的目录位置大致如下: [root@iZbp12vtv76y9q3d633bh6Z /]# hadoop fs -ls ...

  2. Lucene索引维护(添加、修改、删除)

    1. Field域属性分类 添加文档的时候,我们文档当中包含多个域,那么域的类型是我们自定义的,上个案例使用的TextField域,那么这个域他会自动分词,然后存储            我们要根据数 ...

  3. Oracle 唯一 索引 约束 创建 删除

    http://www.blogjava.net/lukangping/articles/340683.html/*给创建bitmap index分配的内存空间参数,以加速建索引*/ show para ...

  4. Mysql的基础使用之SQL原生语句的使用:表的 创建 删除 修改 (一)

    上一篇主要讲的是关于Mysql的分支MariaDB在Linux下的安装 顺利安装完成的小伙伴,就可以接着来试试SQL的魅力了 红色为命令 蓝色为自定义名 查看数据库 MariaDB [(none)]& ...

  5. [No000005]C#注册表操作,创建,删除,修改,判断节点是否存在

    //用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除.键值的创建(设置值.修改),读取和删除.判断注册表项是否存在.判断键值是否存在. //准备工作: //1:要操作注册表 ...

  6. sql创建删除修改表的基本操作

    1 建立表格 在建立好数据库以后,就可以根据储存资料的需求,使用SQL叙述建立所有需要的表格(table).建立表格的设定非常多,以建立"world.city"表格来说,它的叙述会 ...

  7. lucene索引的创建与搜索

    package com.cs.multi; import java.io.File;import java.io.IOException; import org.apache.lucene.analy ...

  8. c# 注册表操作,创建,删除,修改,判断节点是否存在

    用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除.键值的创建(设置值.修改),读取和 删除.判断注册表项是否存在.判断键值是否存在. 准备工作: 1:要操作注册表,我们必须 ...

  9. *lucene索引_的删除和更新

    [删除] [恢复删除] [强制删除] [优化和合并] [更新索引] 附: 代码: IndexUtil.java: package cn.hk.index; import java.io.File; i ...

随机推荐

  1. COM组件服务访问权限

    解决办法 :添加ASP.NET权限访问COM组件服务. IIS 5 上为 {MACHINE}\ASPNET IIS 6 和 IIS 7 上为网络服务:NETWORK SERVICE IIS 7.5 上 ...

  2. Codeforces Round #504 D. Array Restoration

    Codeforces Round #504 D. Array Restoration 题目描述:有一个长度为\(n\)的序列\(a\),有\(q\)次操作,第\(i\)次选择一个区间,将区间里的数全部 ...

  3. Flask:cookie 和 session (0.1)

    Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2 Cookie是什么?有什么用? 某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常 ...

  4. file.getPath() getAbsolutePath() getCanonicalPath()区别

    package file; import java.io.File; import java.io.IOException; public class getFilePath { public sta ...

  5. centos7上安装指定版本gitlab

    当我们在做gitlab服务器迁移的时候需要两台服务器中的gitlab相同,如果不同则不让回复git备份.这样我们就要安装指定版本的gitlab. 1. 安装依赖软件 yum -y install po ...

  6. Maven 基础知识

    Maven MavenMaven 简介 Maven MavenMaven 是 Apache Apache Apache 软件基金会组织维护的 软件基金会组织维护的 软件基金会组织维护的 软件基金会组织 ...

  7. wpf image blur

    RenderOptions.BitmapScalingMode="NearestNeighbor"

  8. SQLServer系统变量使用

    1.@@IDENTITY返回最后插入的标识值.这个变量很有用,当你插入一行数据时,想同时获得该行的的ID(标示列),就可以用@@IDENTITY示例:下面的示例向带有标识列的表中插入一行,并用 @@I ...

  9. Ubuntu 搭建docker registry 私有仓库

    一.为什么要搭建 docker 私有仓库 原因有几个: 项目需要,不希望将项目放到 docker hub 上. 环境需求,考虑网络.效率的问题,希望在私有服务器上建立自用的仓库,提高便利性和访问速度. ...

  10. 题解-python-CodeForces 1A

    A. Theatre Square time limit per test 2 seconds memory limit per test 64 megabytes input standard in ...