You'll have to open a new IndexReader after the delete is committed.
An IndexReader (or IndexSearcher) only searches the point-in-time
snapshot of the index as of when it was opened.
Mike
Cam Bazz wrote:
> Hello,
>
> Here is what I am trying to do:
>
> dir = FSDirectory.getDirectory("/test");
> writer = new IndexWriter(dir, analyzer, true, new
> IndexWriter.MaxFieldLength(2));
> writer.setMaxBufferedDocs(IndexWriter.DISABLE_AUTO_FLUSH);
>
> Document da = new Document();
> da.add(new Field("word", "a", Field.Store.YES,
> Field.Index.NOT_ANALYZED_NO_NORMS));
>
> Document db = new Document();
> db.add(new Field("word", "b", Field.Store.YES,
> Field.Index.NOT_ANALYZED_NO_NORMS));
>
> writer.addDocument(da);
> writer.addDocument(db);
>
> writer.commit();
>
> searcher = new IndexSearcher(dir);
>
> writer.deleteDocuments(new Term("word", "a"));
> writer.commit();
>
> TopDocCollector collector = new TopDocCollector(10);
> searcher.search(new TermQuery(new Term("word","a")),
> collector);
> ScoreDoc[] hits = collector.topDocs().scoreDocs;
> for (int i = 0; i < hits.length; i++) {
> int docId = hits[i].doc;
> Document d = searcher.doc(docId);
> System.out.println(writer.hasDeletions());
>
> System.out.println(searcher.getIndexReader().isDeleted(docId));
> System.out.println(d.get("word"));
> }
>
> searcher.close();
> writer.close();
> dir.close();
>
>
> well I am trying to check if an document has been deleted without
> refreshing the searcher. maybe i should access indexreader in a
> different way?
> the isDeleted() always returns false. that is the problem right now.
>
> Best.
>
> -C.B.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org
|