gpt4 book ai didi

lucene - 如何使用 Term 或 QueryParser 从 Lucene 索引中删除文档

转载 作者:行者123 更新时间:2023-12-01 08:31:36 33 4
gpt4 key购买 nike

我正在尝试从 Lucene 索引中删除文档。
我只想从 lucene index 中删除指定的文件。

我的以下程序正在删除可以使用关键字分析器搜索的索引,但只能使用 StandardAnalyzer 搜索我所需的文件名。那么有什么方法可以在我的术语中设置标准分析器,或者我如何使用 QueryParser 从 lucene 索引中删除文档而不是术语。

 try{
File INDEX_DIR= new File("D:\\merge lucene\\abc\\");

Directory directory = FSDirectory.open(INDEX_DIR);

IndexReader indexReader = IndexReader.open(directory,false);
Term term= new Term("path","fileindex23005.htm");
int l= indexReader.deleteDocuments(term);
indexReader.close();

System.out.println("documents deleted");
}
catch(Exception x){x.printStackTrace();}

最佳答案

我假设您使用的是 Lucene 3.6 或更早版本,否则 IndexReader.deleteDocuments 不再存在。但是,无论如何,您应该改用 IndexWriter。

如果您只能使用查询解析器找到文档,那么只需运行一个普通查询,然后遍历返回的文档,并通过 docnum 删除它们,如下所示:

Query query = queryParser.parse("My Query!");
ScoreDoc[] docs = searcher.search(query, 100).scoreDocs;
For (ScoreDoc doc : docs) {
indexReader.deleteDocument(doc.doc);
}

或者更好(更简单,使用未失效、未弃用的功能),只需使用 IndexWriter ,并直接将查询传递给它:
Query query = queryParser.parse("My Query!");
writer.deleteDocuments(query);

关于lucene - 如何使用 Term 或 QueryParser 从 Lucene 索引中删除文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18892252/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com