Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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 嵌入solr有什么问题_Java_Solr - Fatal编程技术网

Java 嵌入solr有什么问题

Java 嵌入solr有什么问题,java,solr,Java,Solr,我在web应用程序中使用Solr。因为部署会更简单,所以我想嵌入Solr。然而,“嵌入Solr的灵活性较差,更难支持,测试也不太好,应该为特殊情况保留” 我想更详细地了解这种权衡。我想知道为什么它不那么灵活?在什么情况下建议使用嵌入式模式?据我所知,这些警告是正确的 无法公开嵌入式服务器 如果有一天,您希望将应用程序的solr部分公开给世界其他地方,那么您将无法这样做。这已在SO问题中详细阐述 无管理界面 嵌入式服务器不提供管理接口。这是有道理的,因为它无法从外部访问,请参阅前面的警告。此外,当

我在web应用程序中使用Solr。因为部署会更简单,所以我想嵌入Solr。然而,“嵌入Solr的灵活性较差,更难支持,测试也不太好,应该为特殊情况保留”


我想更详细地了解这种权衡。我想知道为什么它不那么灵活?在什么情况下建议使用嵌入式模式?

据我所知,这些警告是正确的

无法公开嵌入式服务器

如果有一天,您希望将应用程序的solr部分公开给世界其他地方,那么您将无法这样做。这已在SO问题中详细阐述

无管理界面

嵌入式服务器不提供管理接口。这是有道理的,因为它无法从外部访问,请参阅前面的警告。此外,当嵌入式服务器运行时,您无法使用另一个提供管理界面的完整solr安装来访问其solr主页中的核心。这已在SO问题中详细阐述

无分片支持

正如你在SO问题中看到的那样
仍然存在一个问题,即嵌入式服务器不支持分片。

当您需要一个非分布式的简单解决方案时,建议使用嵌入式服务器。例如,在编写小型单元和集成测试时,您可能希望有一个具有特殊配置的特殊Solr实例,例如使用RamDirectories而不回写更改

开发数据库也是如此。我总是使用内存中的数据库,而不是写回文件加载预设场景(我也用于验收和集成测试)。这样,在重新启动应用程序和进行回归测试时,您就有了速度优势。如果您的服务器在一秒钟或10秒钟内启动,这是一个区别,而这正是您可以实现的。如果您的测试运行缓慢,那么在测试驱动的开发中,您的速度就会减慢

另外,如果您需要一个专用的Solr服务器实例或需要云功能,您可以轻松地从使用嵌入式服务器切换到独立服务器。这只是几行代码,您就完成了


因此,如果您不知道是否需要专用服务器,只需从嵌入式版本开始,并享受简化的配置和设置以及少量的性能提升。一旦您需要一台独立服务器,只需更改一些代码行,其余代码保持不变。

生产中的小数据集有什么用?也许有几千条记录是由一个老式的SQL数据库支持的,它在每次启动时都会填充嵌入式Solr?如果数据集是恒定的,那么为什么不呢。如果不是这样的话,如果你的系统是分布式的,你必须传递事件,或者让每个实例的其他方法跟上现实。这通常是让solr“集群”为您处理同步的关键。