我想知道solr中共享库的用途是什么?特别是在处理多个内核时......有没有办法可以将多个内核中的所有常见xml放入一个配置文件中,然后覆盖特定内核中的必要标签?
感谢。
答案 0 :(得分:2)
http://wiki.apache.org/solr/Solr.xml%20(supported%20through%204.x) sharedLib - 包含添加到每个核心的类路径的.jar文件的目录的路径。路径是相对于solr.home(solr.xml所在的位置)
答案 1 :(得分:0)
你知道,我在“使用solr时如何在核心之间共享lib”的经验可以很好地解释“solr中共享库的目的”。以下是我去年在codeproject上分享的内容(https://www.codeproject.com/Tips/1140498/How-to-Share-Lib-Between-Cores-When-Using-solr),希望可以提供帮助:
简介
使用solr时,您可能希望在内核之间共享lib,因为solr内核可能会使用不同的类加载器加载不同的lib(使用solrconfig.xml配置)。问题是他们不会彼此共享类变量,那么你必须浪费更多的空间并花更多的时间让分布式程序相互配合,例如分词插件加载词典。
解决此问题的步骤
通过搜索谷歌找到答案需要很长时间,因为我的关键字可能并不意味着重点。 “solr classloader不同核心”是我的关键词,关于“classloader”的问题。如果我改为“在核心之间共享”,我可能会在早些时候找到答案。
我怀疑在配置solr时我可能犯了一些错误,但没有。所以我在绝望中检查了solr源代码,发现solr加载了具有不同类加载器的内核的库。
发生意外我在https://issues.apache.org/jira/browse/SOLR-409中发现了一些条款,它们并没有解决我的问题,而是从问题主题“允许在核心之间共享可配置的类加载器共享”中找到我的关键字。我应该首先从issues.apache.org查找我的答案。
通过新关键字搜索谷歌后,我从搜索结果中找到了一些解决方案:
4.1)在创建核心之前在solr中找到一个位置 (如果你想要单身,你必须将它们加载到核心之外,使用 parent classloader - 在jetty的情况下,这意味着编写自己的码头 初始化或配置以强制共享类加载器。或找个地方 在创建核心之前,在solr内部。谷歌为montysolr看 第一种方法的例子)
4.2)solr config XML现在可以指定一个libDir元素(与指定dataDir的方式相同)。 该元素还可以通过'shared'属性指定库是否共享。 默认情况下,shared属性为true;如果指定了libDir,则其类加载器可以共享。
语法:
<libDir shared='true*|false'>/path/to/shareable/dir</libDir>
(来自grokbase.com/t/lucene/solr-dev/07bc9zs7bt/jira-created-solr-409-allow-configurable-class-loader-sharing-between-cores)
我意识到solr可以提供扩展以满足我的需要的能力,它应该和我相信。
<solr/>
部分指定sharedLib ='lib'。 solr.xml并将必要的jar文件放在那里。“ “shared =&gt; sharedLib =&gt; Multi-Core”,实际上我之前用pdf搜索过多核,但不是“多核”,这可能会导致正确答案。 “多核与多核”,它们是不同的!
困难的课程可能是我在这里用英语写作经验的原因之一。
解决方案
在solr.xml的<solr/>
部分指定sharedLib ='lib'(默认SOLR_HOME / lib或您指定的相对路径)
修改你的shell脚本和cp必要的jar文件(可能放在“global”或其他地方的文件夹下)。