though, saying that, my code is essentially doing what yours is doing.

On 7/2/07, Patrick Burrows <[EMAIL PROTECTED]> wrote:

I'm getting the items from a MessageQueue. They come in sporadically, and
not all require an initial delete. Only when a DeleteFirst flag is set.

So... I can't really batch my deletes.


 On 7/2/07, Simone Busoli <[EMAIL PROTECTED]> wrote:
>
> As far as I can tell from the docs you should open a reader, delete all
> the documents you need to delete and close the reader. The open a writer,
> add all the documents you need to add and close it. I wouldn't wrap them
> into other classes since you loose granularity on what you really want to
> happen. In the project I am developing using Lucene.Net I'm doing
> something like the following into a method which gets called on a regular
> basis into a singleton class, to ensure that this instance is the only
> responsible for creating writers which lock the index:
>
> public void UpdateIndex()
> {
>             [...]
>             // Create new IndexReader to update the index
>             indexReader = IndexReader.Open(indexDirectory);
>
>             // Here remove files from the index using the indexReader
> instance
>
>             // Close the IndexReader
>             indexReader.Close();
>             indexReader = null;
>
>             // Create a new IndexWriter to add new documents to the
> index
>             indexWriter = new IndexWriter(indexDirectory, new
> StandardAnalyzer(), false);
>
>             // Here add documents to the index using the indexWriter
> instance
>
>             // Close the IndexWriter
>             indexWriter.Optimize();
>             indexWriter.Close();
>             indexWriter = null;
> }
>
> Simone
>
> Patrick Burrows wrote:
>
> Assuming I have assured that only one thread from one process is calling
> the
> below methods, is there any issue with calling
>
> DeletePost(post.Id);
> AddPostToIndex(post);
>
> in terms of potentially corrupting the index? I can't see any. But I've
> suddenly got paranoid about index corruption. IndexModifierSingleton is
> just
> that, a singleton for the IndexModifier. The IndexReader is not, since I
>
> wanted a fresh reader for each delete operation.
>
>
>
>        private static void DeletePost(int feedItemId)
>        {
>            IndexReader ir = IndexReader.Open(IndexPath());
>            ir.DeleteDocuments(new Term(Post.FIELD_FEEDITEMID,
> feedItemId.ToString ()));
>            ir.Close();
>        }
>
>
>        public static string IndexPath()
>        {
>            return Settings.Default.IndexPath;
>        }
>
>        public static void AddPostToIndex(Post post)
>        {
>            IndexModifierSingleton.instance.AddDocument(post.ToDocument());
>
>        }
>
>
>


--
-
P




--
-
P

Reply via email to