在客户端站点托管的应用程序中嵌入文本搜索(Lucene/Solr/Hibernate搜索)有哪些挑战

vmdwslir  于 2022-11-07  发布在  Lucene
关注(0)|答案(2)|浏览(149)

我们有一个企业java web应用程序,我们的客户(外部)部署在他们的内联网上。我正在探索不同的全文搜索选项:Lucene/Solr/Hibernate搜索,一个常见的问题是部署/管理/调优开销。
这在我们的案例中尤其具有挑战性,因为我们不托管这些应用程序。据我所知,这些技术的大部分用途都是在托管应用程序中。我们的客户通常在集群环境中部署我们的应用程序,并且没有使用Lucene/Solr的任何经验。
有人对此有经验吗?你在这种方法中遇到了什么挑战?你是如何克服它们的?在这一点上,我试图确定这是否可行。
谢谢你

hgc7kmma

hgc7kmma1#

将应用程序部署到使用Lucene(或Solr)的客户端站点上是非常可行的。
请记住:管理

  • 您需要一种方法来对索引进行版本控制,因此如果/当您更改文档时

结构,则可以
已升级。

  • 因此您需要一种好方法来强制对所有现有数据重新建立索引。
  • 您也可以提供一个Admin选项,允许在索引上调用optimize(),或者安排这个操作。最好先测试一下它的实际影响,因为根据索引的形状,可能不需要它
    部署如果要部署到集群环境中,最简单(在开发速度和运行时速度方面也是最快的)的解决方案可能是在每个节点上创建索引。
    优化*是否有要索引的数据集的合理近似值?您需要确保了解索引的缩放方式(无论是速度还是大小),由于你所考虑的合理的数据集大小,可能与你的客户端不一样......因此,你至少需要能够让客户端知道哪些因素会导致索引大小过大,并且可能降低性能。
e0bqpujr

e0bqpujr2#

embedding lucene in your app比发送查询到单独的Solr集群有两个优点,性能和部署/安装的简易性。嵌入lucene意味着在同一个JVM中运行lucene,这意味着没有额外的服务器往返。提交应该在一个单独的线程中批处理。嵌入lucene还意味着在类路径中包含更多的JAR文件,这样就没有单独的Solr安装。
如果你的应用是集群感知的,那么嵌入式lucene选项就很成问题。集群中一个节点的更新需要可以从集群中的任何节点搜索到。在所有节点上同步lucene索引并不比使用Solr产生更好的性能。使用Solr 4,您可能会发现管理对您的客户来说不是一个进入的障碍。请查看严重命名错误的SolrCloud的文献。

相关问题