Well, Document da = new Document(); da.add(new Field("word", "a", Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS));
writer.addDocument(da); writer.commit(); searcher = new IndexSearcher(dir); IndexReader reader = searcher.getIndexReader(); writer.deleteDocuments(new Term("word", "a")); writer.commit(); System.out.println(reader.isDeleted(0)); I could not - I am getting something wrong. What do you mean by prior to asking indexwriter giving me a realtime reader? Best On Mon, Sep 15, 2008 at 11:09 PM, Michael McCandless <[EMAIL PROTECTED]> wrote: > > It will return true if the provided docID was deleted, by term or query or > docID (due to exception, privately) prior to when you asked IndexWriter to > give you a "realtime" IndexReader. > > Mike > > Cam Bazz wrote: > >> ok. but then under what circumstances isDeleted() will return true? >> >> Best. >> >> On Mon, Sep 15, 2008 at 10:57 PM, Michael McCandless >> <[EMAIL PROTECTED]> wrote: >>> >>> Until we can get realtime search integrated into Lucene (which I'm >>> gradually >>> trying to working on) I think the answer is no -- for now you have to >>> keep >>> your own record of which docIDs you've deleted. >>> >>> Because IndexWriter allows deletes by query and term (and also by docID, >>> privately, when a document hits a non-aborting exception) it's tricky to >>> give real-time isDeleted for a docID. >>> >>> My current thinking on how to do this (once we add realtime search) is >>> when >>> you ask IndexWriter for a new IndexReader, which searches the full index >>> in >>> the Directory plus all adds/deletes buffered in IndexWriter's RAM buffer, >>> it >>> must "materialize" all such buffered deletes down to docID. Those >>> deletes >>> that are against existing segments in the index will be flushed at that >>> point to those segments; the deletes that apply only to buffered docs >>> will >>> be held in RAM and used by the RAMIndexSearcher that searches >>> IndexWriter's >>> buffer. >>> >>> Mike >>> >>> Cam Bazz wrote: >>> >>>> So, apart from the searcher, is there anyway to access the deletion >>>> marks in an indexWriter. >>>> >>>> I have a live cache - and I was keeping two caches, ones for new adds, >>>> other for deletes. >>>> I am trying to get rid of deleted cache, and ask the index if a >>>> fetched document is marked deleted. >>>> >>>> Best. >>>> >>>> -C.B. >>>> >>>> On Mon, Sep 15, 2008 at 10:20 PM, Michael McCandless >>>> <[EMAIL PROTECTED]> wrote: >>>>> >>>>> 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: [EMAIL PROTECTED] >>>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>>> >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>> >>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]