multithreading - Lucene如何在多线程环境下使用IndexReader?

标签 multithreading solr elasticsearch lucene

如果我想从同一个IndexReader实例(大概是一个单例实例)中从多个线程中读取数据,这将对性能产生怎样的影响?是否存在“读取锁定”或任何可能损害多线程可能性的内容?

有没有在多线程环境中使用相同的IndexReader的最佳实践?

最佳答案

根据documentation

IndexReader instances are completely thread safe, meaning multiple threads can call any 
of its methods, concurrently. If your application requires external synchronization,
you should not synchronize on the IndexReader instance; use your own (non-Lucene)
objects instead.

但是您还要考虑的另一件事是,如果indexreader由多个线程共享,并且在该过程中索引被更新,则在创建新的indexreader实例之前,更新的索引将不会得到反射(reflect)。

关于multithreading - Lucene如何在多线程环境下使用IndexReader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27684768/

相关文章:

c# - Solr - 为单个唯一 ID 存储多个 Word 文档

elasticsearch - 存储桶脚本不起作用-Elasticsearch 2.4.2

Java:在线程中执行一条语句

search - Solr 4.0存储和搜索Profile的Normalize数据

solr - 如何在 JSON 中获取 Solr Core Admins API 响应

elasticsearch - 如何在集群中移动分片

java - 在 Elasticsearch 中使用 java api 创建索引模板

.net - Visual Studio 的线程窗口如何识别 "Main Thread'

java - 监控和锁定说明

c# - 是否可以在执行 Parallel.ForEach 期间更改 parallelOptions.MaxDegreeOfParallelism?