So I'm very happy with the Lucene.NET implementation on a current site other than the odd occasional index corruption. I won't get any errors but I'll start noticing results coming back double, triple, etc. If I use Luke I'll see oddness with the index, lots of documents showing up multiple times. So I'm thinking that maybe the finalizer / Dispose isn't being called and thus this corrupts the indices?
Anyone have any experience preventing this from happening? I know that if I manually delete the index files from disk that everything returns to normal. Should I be trying to do that on each service restart?
The solution ended up being to use the indexwriter constructor overload that allows one to specify that the indices should be recreated. This deletes the old index files. This SO question helped point me in the right direction.