我正在与Solr合作,在Windows上进行多种大规模制作环境配置。最近我遇到了一个涉及Solr的非常奇怪的问题,其中索引在Solr中运行良好,但是当重新启动服务器或Windows服务器时,核心将脱机并且不再加载。
花了很多时间并尝试了很多东西后我才开始工作,但是想要理解为什么会这样......只有这个安装有这个问题..为什么其他Solr实例工作正常?
请注意,我的问题已通过下述更改得到修复,但我想了解问题的原因,因此需要对其行为进行一些权威性的回答。
我已经将一些内容修改为Solrconfig.xml,特别是我更改的请求处理程序之一,而文件中的所有其他元素完全相同。
较旧的solrconfig.xml具有以下:
<requestHandler name="/select" class="solr.SearchHandler" >
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">2000</int>
<str name="field">Name</str>
<str name="spellcheck">on</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck.dictionary">wordbreak</str>
<str name="spellcheck.maxCollations">5</str>
<str name="spellcheck.count">5</str>
<str name="spellcheck.alternativeTermCount">2</str>
<str name="spellcheck.maxResultsForSuggest">5</str>
<str name="spellcheck.maxCollationTries">5</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
新的/更新的solrconfig.xml具有以下:
<requestHandler name="/select" class="solr.SearchHandler" >
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">2000</int>
<str name="field">Name</str>
<str name="spellcheck">on</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck.dictionary">wordbreak</str>
<str name="spellcheck.maxcollations">5</str>
<str name="spellcheck.count">5</str>
<str name="spellcheck.alternativetermcount">2</str>
<str name="spellcheck.maxresultsforsuggest">5</str>
<str name="spellcheck.maxcollationtries">5</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
我在Windows Server 2008 R2上使用Tomcat 7.0和Solr 4.7。
如果您仔细注意,唯一更改的行如下:
<str name="spellcheck.maxcollations">5</str>
<str name="spellcheck.count">5</str>
<str name="spellcheck.alternativetermcount">2</str>
<str name="spellcheck.maxresultsforsuggest">5</str>
<str name="spellcheck.maxcollationtries">5</str>
</lst>
还有......骆驼资本案件改为小案。令人惊讶的是,这改变了这个问题!
我的问题是:
Solr是如何工作的吗? Solr配置文件对大小写敏感吗?
如果是,那么为什么它与许多其他安装一起工作正常?为什么只有这种灌输有这个问题?
它与Solr / Tomcat或OS版本有关吗?
2014年6月14日更新
我们在重启时记录到catalina日志文件中时出现以下错误。我最初没有发布它,因为我们收到的问题似乎并不熟悉。但这可能会给你一些提示,所以在这里添加:
严重:Web应用程序[/ solr]使用键创建了一个ThreadLocal type [org.apache.solr.schema.DateField.ThreadLocalDateFormat](value [org.apache.solr.schema.DateField$ThreadLocalDateFormat@1362773])和 类型的值 [org.apache.solr.schema.DateField.ISO8601CanonicalDateFormat](值 [org.apache.solr.schema.DateField$ISO8601CanonicalDateFormat@6b2ed43a]) 但是在Web应用程序停止时无法将其删除。主题 随着时间的推移会更新,以避免可能的记忆 泄漏。
答案 0 :(得分:1)
要回答第一个问题,solr在它的confix和schema xml中确实区分大小写。这意味着以下参数将获得默认值:
spellcheck.maxcollations : 1
pellcheck.alternativetermcount : null
spellcheck.maxresultsforsuggest : null
spellcheck.maxcollationtries : 0
好的部分是有很多代码处理特殊情况,例如params的空引用。不好的一点是,我无法弄清楚在上一次solr发布期间这种行为是如何变化的,但它应该与操作系统无关。
此外,应用程序关闭后,您发布的错误似乎被抛出。您确定在此之前没有记录其他错误吗?