06_Lucene索引
2018-01-21 本文已影响0人
对方不想理你并向你抛出一个异常
索引库的添加
- 向索引库中添加document对象, 步骤
- 第一步:先创建一个indexwriter对象
- 第二步:创建一个document对象
- 第三步:把document对象写入索引库
- 第四步:关闭indexwriter。
/**
* 删除索引
* @throws Exception
*/
@Test
public void testDeleteIndex() throws Exception{
//创建分词器,StandardAnalyzer标准分词器,标准分词器对英文分词效果很好,对中文是单字分词
Analyzer analyzer = new IKAnalyzer();
//指定索引和文档存储的目录
FSDirectory directory = FSDirectory.open(new File("D:\\BaiduNetdiskDownload\\lucene_day01\\tmp"));
//创建写对象的初始化对象
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_4_10_3,analyzer);
//创建索引和文档写对象
IndexWriter indexWriter = new IndexWriter(directory , config);
//删除所有
// indexWriter.deleteAll();
/**
* Term词元,就是一个词,
* 第一个参数:域名,
* 第二个参数:要删除含有此关键词的数据
*/
Term term = new Term("fileName" , "apache");
//根据名称进行删除
indexWriter.deleteDocuments(term);
//提交
indexWriter.commit();
//关闭
indexWriter.close();
}
/**
* 更新就是按照传入的Term进行搜索,如果找到结果那么删除,将更新的内容重新生成一个Document对象
* 如果没有搜索到结果,那么将更新的内容直接添加一个新的Document对象
* @throws Exception
*/
索引库删除
删除全部
//删除全部索引
@Test
public void deleteAllIndex() throws Exception {
IndexWriter indexWriter = getIndexWriter();
//删除全部索引
indexWriter.deleteAll();
//关闭indexwriter
indexWriter.close();
}
说明:将索引目录的索引信息全部删除,直接彻底删除,无法恢复。
此方法慎用!!
指定查询条件删除
//根据查询条件删除索引
@Test
public void deleteIndexByQuery() throws Exception {
IndexWriter indexWriter = getIndexWriter();
//创建一个查询条件
Query query = new TermQuery(new Term("filename", "apache"));
//根据查询条件删除
indexWriter.deleteDocuments(query);
//关闭indexwriter
indexWriter.close();
}
索引库的修改
原理就是先删除后添加。
@Test
public void testUpdateIndex() throws Exception{
//创建分词器,StandardAnalyzer标准分词器,标准分词器对英文分词效果很好,对中文是单字分词
Analyzer analyzer = new IKAnalyzer();
//指定索引和文档存储的目录
FSDirectory directory = FSDirectory.open(new File("D:\\BaiduNetdiskDownload\\lucene_day01\\tmp"));
//创建写对象的初始化对象
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_4_10_3,analyzer);
//创建索引和文档写对象
IndexWriter indexWriter = new IndexWriter(directory , config);
Term term = new Term("fileName","1.create web page.txt");
Document doc = new Document();
doc.add(new TextField("fileName", "xxxxxxx", Field.Store.YES));
doc.add(new TextField("fileContext", "xxx I like you very much!", Field.Store.YES));
doc.add(new LongField("fileSize", 100L, Field.Store.YES));
indexWriter.updateDocument(term , doc);
//提交
indexWriter.commit();
//关闭
indexWriter.close();
}