Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在使用Lucene索引期间,搜索没有响应_Java_Lucene_Indexing - Fatal编程技术网

Java 在使用Lucene索引期间,搜索没有响应

Java 在使用Lucene索引期间,搜索没有响应,java,lucene,indexing,Java,Lucene,Indexing,当我重新索引应用程序的DB数据时,同时执行搜索,运行搜索的线程将休眠,直到重新索引完成。我假设索引方法是线程安全的,以防止在索引时更改数据。Lucene中是否有任何内置方式使其仅对搜索(数据未被更改的地方)作出响应?还是我应该开始自己思考一些事情?我正在Tomcat服务器上运行我的应用程序 谢谢,Tomer我假设您实际上是在重建索引(或者从头开始重新编制所有文档的索引,而不是重新编制单个文档的索引)。重建索引时,您无法对其执行查询,因为它的状态不一致 通常使用的最简单的解决方案是在后台重建索引(

当我重新索引应用程序的DB数据时,同时执行搜索,运行搜索的线程将休眠,直到重新索引完成。我假设索引方法是线程安全的,以防止在索引时更改数据。Lucene中是否有任何内置方式使其仅对搜索(数据未被更改的地方)作出响应?还是我应该开始自己思考一些事情?我正在Tomcat服务器上运行我的应用程序


谢谢,Tomer

我假设您实际上是在重建索引(或者从头开始重新编制所有文档的索引,而不是重新编制单个文档的索引)。重建索引时,您无法对其执行查询,因为它的状态不一致

通常使用的最简单的解决方案是在后台重建索引(同时仍对旧索引执行查询),然后用新索引替换索引


如果您面临的问题与频繁的服务器崩溃有关,那么可能值得研究一些更系统的方法,例如在中实现的方法--它记录后续的索引请求,因此,它可以从索引的最后一个正确快照中恢复。

同时写入和读取索引应该没有问题。读卡器将只看到提交的数据(除非您使用的是近实时搜索)。你所描述的应该有用。你能给我们一些遇到这个问题的示例代码吗?Lucene中是否有任何内置的“写时复制”机制?我不知道Lucene本身有任何这样的机制。索引的管理传递给应用程序或搜索服务器(Solr/ES)。我认为可以用这个例子。