Solr多核搜索

Srikar Appalaraju:

我正在使用Apache Solr进行搜索。我使用它来提供基于用户的个人搜索。即每个用户都有一个单独的物理Lucene索引。因此,对于10个用户,我在磁盘上有10个单独的物理索引。

为了支持对这些索引的搜索,我计划使用Solr MultiCore Feature我一直在阅读有关此的各种文章,看来这是可行的。

我实际上不确定的是,当Solr搜索器获得查询时,而不是将查询发送到所有多核中,我如何将查询集中到与特定用户索引相连的那个核中?这是配置更改还是我需要做代码级更改?

即我想只将查询发送到一个solr-core(基于userid)。这有可能吗?

更新:因此,根据其中一个解决方案,我可以在solrconfig.xml中添加多核,即在启动solr时,我需要提及这些核(或者在我的情况下是用户)。因此,现在,如果要添加新的用户索引,则可能需要停止solr,编辑其配置,添加用户核心并再次启动solr。有什么方法可以动态地将核心添加到正在运行的Solr实例吗?

JohanSjöberg:

Solr核心实质上是在同一上下文中在应用程序服务器上运行的多个索引。您可以将其视为为每个用户安装1个war文件每个核心用名称分隔,因此您必须自己跟踪哪个URL对哪个用户有效。

例如,

http://host.com/solr/usercore1/select?q=test http://host.com/solr/usercore2/select?q=test

这是基于config solr.xml的

<solr persistent="true" sharedLib="lib">
 <cores adminPath="/admin/cores">
  <core name="usercore1" instanceDir="usercore1" />
  <core name="usercore2" instanceDir="usercore1" />
 </cores>
</solr>

...而不是将查询发送到所有多核...

这种方法称为分片,并且基于分布式搜索,这是一个完全独立的功能,专注于多个 solr实例上拆分一个用户索引

[ edit ]创建新内核的一种方法是solrj,它提供了一个例程CoreAdmin.createCore(..)您也可以使用手动HTTP请求执行此操作:/cores?action=CREATE&name=usercore3...

Solr还可以动态地重新加载其配置,如果您有一个可以编辑内核配置的脚本,那么这些更改也应该被选择。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章