c# – Lucene.Net写读同步

c# – Lucene.Net写读同步,第1张

概述>可以在打开阅读时使用IndexWriter(IndexWriter)将新文档写入索引(使用IndexReader)?还是在写作之前我要仔细阅读吗? >可以在索引中读取/搜索文档(使用IndexReader)打开它(使用IndexWriter)吗?或者我必须在阅读之前关闭写作? Lucene.Net线程是否安全?还是我自己写? 您可能会随时开放任何数量的读者/搜索者,但只有一位作家.这是由目录特定 >可以在打开阅读时使用IndexWriter(IndexWriter)将新文档写入索引(使用IndexReader)?还是在写作之前我要仔细阅读吗?
>可以在索引中读取/搜索文档(使用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写/读同步所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1257907.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存