gpt4 book ai didi

java - Lucene IndexReader 提交不起作用

转载 作者:行者123 更新时间:2023-12-01 15:09:46 24 4
gpt4 key购买 nike

我有一个方法可以从我的 Lucene 索引中搜索和删除文档。

但是,当我运行代码两次时,它仍然找到标记为从上一次迭代中删除的文档,并且 indexReader.hasDeletions() 计算结果为 true。

public void duplicatesRemover(String currentIndex) throws Exception {

Directory directory = FSDirectory.open(new File(currentIndex));
IndexReader indexReader = IndexReader.open(directory, false);
IndexSearcher indexSearcher = new IndexSearcher(indexReader);

int dups = 0;
for (int i = 0; i < indexReader.numDocs(); i++) {
Document doc = indexReader.document(i);
int articleId = Integer.parseInt(doc.get("articleId"));
Query q = NumericRangeQuery.newIntRange("articleId", articleId, articleId, true, true);
TopDocs topDocs = indexSearcher.search(q, 10);
if (topDocs.totalHits > 1 ) {
indexReader.deleteDocument(i);


System.out.print("Total matches from search found: " + topDocs.totalHits + " articleId = " + articleId);
System.out.println(" total dups found " + ++dups + "/" + i);

}
}
if(indexReader.hasDeletions()){
System.out.println("Has deletions");
Map<String, String> commitUserData = new HashMap<String, String>();
commitUserData.put("foo", "fighter");
indexReader.commit(commitUserData);
}

indexSearcher.close();
indexReader.close();

directory.close();
}

非常感谢 Yaga 士

最佳答案

您使用的 Lucene 版本是什么? deleteDocumentcommit 方法已弃用。这些操作应该通过抛出 IndexWriter 来完成,如上所述 here

关于您的问题,我认为在 IndexSearcher 打开时操作索引不是一个好习惯。我将从检查这个方向开始。

关于java - Lucene IndexReader 提交不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12491533/

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