Java lucene4.5删除文档和更新文档不工作

Java lucene4.5删除文档和更新文档不工作,java,lucene,Java,Lucene,updateDocument或deleteDocuments无效 文件还是一样的。我的lucene是4.5。 有什么问题吗 我搜索了很多方法。看起来一样,有人能帮我吗 1-这是: Directory indexDir = new SimpleFSDirectory(new File("D:" + File.separator + "testindex")); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_45); IndexW

updateDocument或deleteDocuments无效

文件还是一样的。我的lucene是4.5。 有什么问题吗

我搜索了很多方法。看起来一样,有人能帮我吗

1-这是:

Directory indexDir = new SimpleFSDirectory(new File("D:" + File.separator + "testindex"));

Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_45);

IndexWriterConfig writerConfig = new IndexWriterConfig(Version.LUCENE_45, analyzer);

writerConfig.setOpenMode(OpenMode.CREATE_OR_APPEND);

IndexWriter indexWriter = new IndexWriter(indexDir, writerConfig);

Document document = new Document();

Field stringField = new TextField("int1", "hello lucky boy", Store.YES);


document.add(stringField);

indexWriter.addDocument(document);

indexWriter.close();

Term term = new Term("int1", "hello lucky boy");

IndexWriterConfig writerConfig2 = new IndexWriterConfig(Version.LUCENE_45, analyzer);

IndexWriter indexWriter2 = new IndexWriter(indexDir, writerConfig2);
indexWriter2.updateDocument(term, document);

indexWriter2.deleteDocuments(term);

indexWriter2.close();
System.out.println("......" + document);

System.out.println("...跟新索引文件结束...");
将不进行分析。因为您使用StandardAnalyzer为文档编制索引,所以您希望在索引中找到术语:“hello”、“lucky”和“boy”。您的查询是针对单个术语“hello lucky boy”,因此您将找不到匹配项。更新或删除文档时,如果使用术语来标识文档,则假定您可以使用单个术语唯一标识文档。如果您不能做到这一点,请传入一个查询,然后您可以依靠QueryParser为您应用分析

这是一个很好的例子:使用TermQuery搜索您的术语

如果没有结果,那么lucene在试图查找要删除的文档时也不会有结果

2-这是:

TopDocs docs = indexSearcher.search(new TermQuery(new Term("int1", "hello lucky boy")), 10);
在您刚刚完成文档更新之后,无需删除它们。updateDocuments调用已删除旧文档。如果您更改了内容,使术语不再与更新的文档匹配,则它不会执行任何操作。如果术语仍然匹配,它将删除文档的新版本


3-不显示如何查看索引,但请确保在更新索引后重新打开读卡器。如果您不这样做,您将不会看到文档的更改,直到您这样做。

我可以回答这3个问题。我在调试模型中查看文档,这是相同的。我采纳了您的第一个意见,但不起作用。
TopDocs docs = indexSearcher.search(new TermQuery(new Term("int1", "hello lucky boy")), 10);
indexWriter2.updateDocument(term, document);

indexWriter2.deleteDocuments(term);