简单的添加、删除、更新索引文件中的索引
1,添加索引文件中的一条新的索引
Question addQ = new Question();//新添加的一条数据,对象id在索引文件中没有
addQ.setId("999999999");
addQ.setQuestionname("新添加的一条数据名称");
Question addQ = new Question();//新添加的一条数据,对象id在索引文件中没有
addQ.setId("999999999");
addQ.setQuestionname("新添加的一条数据名称");
Analyzer sa = new SmartChineseAnalyzer(Version.LUCENE_40);
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_40, sa);
iwc.setOpenMode(OpenMode.APPEND);
IndexWriter writer = null;
try {
Directory dir1 = FSDirectory.open(new File("F:\\temp"));
writer = new IndexWriter(dir1, iwc);
FieldType ft = new FieldType();
ft.setIndexed(true);
ft.setStored(true);
ft.setTokenized(true);
FieldType ft2 = new FieldType();
ft2.setIndexed(true);
ft2.setStored(true);
ft2.setTokenized(false);
Document doc = new Document();
doc.add(new Field("id", addQ.getId(), ft2));
doc.add(new Field("questionname", addQ.getQuestionname(), ft));
writer.addDocument(doc);
writer.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
if(writer!=null){
writer.close();
}
if(sa!=null){
sa.close();
}
} catch (CorruptIndexException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
执行完程序后,索引文件中已经添加新的索引数据。
2,删除 索引文件中的一条新的索引
Question delQ = new Question();//索引文件中有的一条数据,根据对象id删
delQ.setId("1111111");
delQ.setQuestionname("要删除的一条数据");
更新索引文件中的一条索引的理念是:先找到这条索引删除,然后再添加这条更新后的索引
执行完程序后,索引文件中已经添加新的索引数据。
2,删除 索引文件中的一条新的索引
Question delQ = new Question();//索引文件中有的一条数据,根据对象id删
delQ.setId("1111111");
delQ.setQuestionname("要删除的一条数据");
IndexWriter writer = null;
Analyzer sa = new SmartChineseAnalyzer(Version.LUCENE_40);
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_40, sa);
Directory dir1 = null;
try {
dir1 = FSDirectory.open(new File("F:\\temp"));
writer = new IndexWriter(dir1, iwc);
Term term = new Term("id", delQ.getId());
writer.deleteDocuments(term);
writer.commit();
writer.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
sa.close();
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("索引删除完成");
3
,更新
索引文件中的一条索引更新索引文件中的一条索引的理念是:先找到这条索引删除,然后再添加这条更新后的索引