Lucen根据path无法删除索引
代码//索引库存放位置
File indexDir = new File("E:\\TestLucene\\fileIndex");
Directory directory = FSDirectory.open(indexDir);
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35,
new StandardAnalyzer(Version.LUCENE_35));
//最大缓存文档数,控制写入一个新的segment前内存中保存的document的数目
config.setMaxBufferedDocs(100);
//控制一个segment中可以保存的最大document数目,值较大有利于追加索引的速度
,默认Integer.MAX_VALUE,无需修改。
config.setMaxBufferedDocs(Integer.MAX_VALUE);
IndexWriter indexWriter = new IndexWriter(directory, config);
indexWriter.deleteDocuments(new Term("path","d.txt")); ---------改成“Id”删除是没问题的
//这两句一定要执行
indexWriter.forceMerge(1);
indexWriter.close(); --------------------编程问答-------------------- 怎么就没有高人了呢? --------------------编程问答-------------------- 有大侠给解决一下吗?? --------------------编程问答-------------------- 自己已解决
是因为在添加时设置成分词索引了 (开始用的id 删除 没有改过 现在改成Path 自己的粗心)所以把代码贴出来和大家分享。
if(path1.endsWith(".docx"))
{
System.out.println("File " + path1+ "正在被索引....");
String temp = FileReaderAll(path1, "GBK");
System.out.println(temp);
Document document = new Document();
FileInputStream file_input_stream = new FileInputStream(path1);
BufferedInputStream input_stream_buffer = new BufferedInputStream(file_input_stream);
OPCPackage opcPackage = POIXMLDocument.openPackage(path1);
POIXMLTextExtractor ex = new XWPFWordExtractor(opcPackage);
// WordExtractor doc_extractor = new WordExtractor(input_stream_buffer);
System.out.println("ex.getText()"+ex.getText());
Date date =new Date();
// document.add( new Field("id", date.getTime() + "", Field.Store.YES, Field.Index.ANALYZED));
document.add(new Field("path",path1,Field.Store.YES,Field.Index.ANALYZED));
document.add(new Field("body",ex.getText(),Field.Store.YES,Field.Index.ANALYZED));
indexWriter.addDocument(document);
input_stream_buffer.close();
file_input_stream.close();
补充:Java , Web 开发