Hello Michael; how can I construct a chain where both reader and writer at the same state? You can call getIndexReader method of the IndexSearcher. But when I delete documents through the reader, how will this interact with the writer? I am have disabled autoflush and using my own logic to do flushes, since I have very small document sizes. However I am little confused about how to use IndexWriter and IndexReader and IndexSearcher at the same logic. Basically currently I have a IndexWriter and IndexSearcher, I write documents, and flush() my own. In this scenario how can I access a reader so that my logic still works.
Best. -C.B. On Jan 21, 2008 4:28 PM, Michael McCandless <[EMAIL PROTECTED]> wrote: > > For this case, too, you will need to use an IndexReader, or use > IndexSearcher to run that particular search and then delete the > docIDs returned using the IndexReader. > > Though, be sure to first iterate through all hits, gathering all > docIDs. And then in 2nd pass, do the deletions. Otherwise you'll > hit this issue: > > https://issues.apache.org/jira/browse/LUCENE-1096 > > (Unless you're using 2.3). > > You can also use Solr, which provides "delete by query". > > Mike > > Cam Bazz wrote: > > > Hello Mike; > > > > How about deleting by a compount term? > > > > for example if I have a document with two fields srcId and dstId > > and I want to delete the document where srcId=1 and dstId=2 > > > > right now there exists a IndexWriter.deleteDocuments(Term t) but > > with that I > > can only delete lets say where srcId=something. > > > > I am sure there is a workaround but I could not find it. > > > > Best, > > > > On Jan 19, 2008 1:07 PM, Michael McCandless > > <[EMAIL PROTECTED]> > > wrote: > > > >> > >> Good question.... > >> > >> So far, this method has not been carried over to IndexWriter because > >> in general it's not really safe, since there's no way to get an > >> accurate docID from IndexWriter itself. > >> > >> You can't really "know" when IndexWriter does merges that compacts > >> deletes and thus changes docIDs. So, if you open a reader on the > >> side, get a docID you want to delete, and then go and ask IndexWriter > >> to delete that docID, you may in fact delete the wrong document. In > >> 2.3, where segment merges are now done with a background thread, it's > >> even worse, because a merge could complete and be committed, thus > >> changing docIDs, at any time... > >> > >> See complex discussion here: > >> > >> http://markmail.org/message/wxqel3gd6cmavk5a > >> > >> As of 2.3, the low level infrastructure was added to IndexWriter for > >> deleting by document ID, but this is not exposed publicly (this was a > >> side effect of LUCENE-1112). It's only used, internally, to delete a > >> document if an exception is hit while indexing it. In theory, you > >> could then subclass IndexWriter and tap into this infrastructure to > >> delete by docID, but, you're entering dangerous territory! > >> > >> Do you have a specific use case in mind here? I think we'd like to > >> make this option available someday in IndexWriter, but doing so now > >> (when there is no way to get a "reliable" docID) seems too > >> dangerous... > >> > >> Mike > >> > >> Cam Bazz wrote: > >> > >>> Hello, > >>> > >>> How do I delete a specific document from an indexwriter? I > >>> understand there > >>> is deleteDocuments(term) which deletes all the documents matching > >>> the term. > >>> But what if I want to delete a document that has more then one > >>> term in > >>> specific. I can search the document with a boolean query, and then > >>> get the > >>> doc id. > >>> I know that doc ids are temporary, but can I not use it for delete? > >>> > >>> IndexReader has a delete by doc id method, but I am not sure how to > >>> use this > >>> when using an indexwriter. > >>> > >>> 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] > >