Solrconfig Case Sensitivity-导致Solr在重启后脱机

时间:2014-06-05 09:45:37

标签: tomcat solr lucene solr4

我正在与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应用程序停止时无法将其删除。主题   随着时间的推移会更新,以避免可能的记忆   泄漏。

1 个答案:

答案 0 :(得分:1)

要回答第一个问题,solr在它的confix和schema xml中确实区分大小写。这意味着以下参数将获得默认值:

spellcheck.maxcollations : 1
pellcheck.alternativetermcount : null
spellcheck.maxresultsforsuggest : null
spellcheck.maxcollationtries : 0

好的部分是有很多代码处理特殊情况,例如params的空引用。不好的一点是,我无法弄清楚在上一次solr发布期间这种行为是如何变化的,但它应该与操作系统无关。

此外,应用程序关闭后,您发布的错误似乎被抛出。您确定在此之前没有记录其他错误吗?