关于用lucene不能删除索引的问题?谢谢!

ronghao100 2005-05-13 06:02:52
最近用lucene做一个搜索,我的代码是这样的:
public synchronized void index(Message message) {
unIndex(message);
try {
Analyzer analyzer = luceneDocumentFactory.getAnalyzer();
IndexWriter writer = indexStore.createWriter(analyzer);
try {
Document doc = luceneDocumentFactory.createDocument(message);
writer.addDocument(doc);
writer.optimize();
} finally {
writer.close();
}
} catch (IOException e) {
throw new LuceneException("Cannot update index", e);
}
}

public synchronized void unIndex(Message message) {

try {
IndexReader reader = indexStore.createReader();
long toDelete = message.getId() ;
try {

Term t = new Term("id", Long.toString(toDelete));
int deleted =reader.delete(t);
System.out.println(deleted);//
} finally {
reader.close();
}
} catch (IOException e) {
throw new LuceneException("Cannot delete from index", e);
}
}
在对数据库操作时调用这两个方法,结果是总是不能正确删除索引,有谁知道吗?谢谢!!
...全文
305 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ronghao100 2005-05-20
  • 打赏
  • 举报
回复
??
ronghao100 2005-05-17
  • 打赏
  • 举报
回复
不管是重建索引还是更新,最后都显示是"Cannot delete from index",真的很郁闷,谁帮帮我把
public class LuceneIndexStore {
private static final String DEFAULT_INDEX_DIR = "F:/Tomcat 5.5/webapps/michael/WEB-INF/index";
private final String indexDir;

public LuceneIndexStore() {
this(DEFAULT_INDEX_DIR);
}

public LuceneIndexStore(String indexDir) {
this.indexDir = indexDir;
try {
File indexFolder = new File(indexDir);
boolean createIndexFolder = !indexFolder.isDirectory();

new IndexWriter(getDirectory(createIndexFolder), null, createIndexFolder).close();
} catch (IOException e) {
throw new LuceneException("Cannot create index directory", e);
}
}

public IndexReader createReader() throws IOException {
return IndexReader.open(getDirectory(false));
}

public IndexWriter createWriter(Analyzer analyzer) throws IOException {
return new IndexWriter(getDirectory(false), analyzer, false);
}

public IndexSearcher createSearcher() throws IOException {
return new IndexSearcher(getDirectory(false));
}

public int getNumDocs() throws IOException {
IndexReader reader = createReader();
int result = reader.numDocs();
reader.close();
return result;
}

protected Directory getDirectory(boolean create) throws IOException {
return FSDirectory.getDirectory(indexDir, create);
}

}
ronghao100 2005-05-16
  • 打赏
  • 举报
回复
为什么没人回答呢?自己顶一下

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧