>可以在索引中读取/搜索文档(使用IndexReader)打开它(使用IndexWriter)吗?或者我必须在阅读之前关闭写作?
Lucene.Net线程是否安全?还是我自己写?解决方法 您可能会随时开放任何数量的读者/搜索者,但只有一位作家.这是由目录特定的锁执行的,通常涉及一个名为“write.lock”的文件.
读者打开快照,作者将更多的数据添加到索引.在您的作者提交(IndexWriter.Commit)数据后,读者需要打开或重新打开(IndexReader.Reopen)才能看到,除非您使用近实时搜索.这涉及从(IndexWriter.GetReader)返回的特殊读者,它将能够在GetReader的调用执行之前查看内容.这也意味着读者可能会看到由于应用程序逻辑调用IndexWriter.Rollback而永远不会被提交的数据.
搜索者使用读者,对这些相同的限制. (无限数量,只能看到已经提交的内容,除非是基于近实时阅读器.)
Lucene是线程安全的,最佳实践是在多个线程之间共享读者和搜索者,同时检查IndexReader.IsCurrent()== true.您可以有一个后台线程运行,一旦检测到更改,重新打开读取器,创建一个新的搜索器,然后让主线程使用它.一旦新的搜索器到位,这也可以预先使用您使用的FIEldCache来提高搜索速度.
总结以上是内存溢出为你收集整理的c# – Lucene.Net写/读同步全部内容,希望文章能够帮你解决c# – Lucene.Net写/读同步所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)