gpt4 book ai didi

java - Solr 多核搜索

转载 作者:搜寻专家 更新时间:2023-11-01 01:01:44 26 4
gpt4 key购买 nike

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

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

我实际上不确定的是,当 solr 搜索器收到查询时,我如何将查询汇集到与该特定用户的索引相连的核心,而不是将查询发送到所有多核?这是配置更改还是我需要进行代码级别更改?

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

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

最佳答案

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

例如,

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

基于配置solr.xml:

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

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

这种方法称为分片,基于分布式搜索,这是一个完全独立的功能,侧重于将一个用户索引拆分到多个 solr 实例。

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

Solr 还可以动态地重新加载其配置,如果您有一个编辑了 cores 配置的脚本,这些更改也应该被拾取。

关于java - Solr 多核搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5221132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com