您好,匿名用户
随意问技术百科期待您的加入

Solr Ping不通,提示异常:undefined field text

+2 投票

安装好solr4.0后,使用它的ping功能,但是一直ping不通,服务器是可以ping通的。

异常信息:

SEVERE: org.apache.solr.common.SolrException: undefined field text
        at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1330)
        at org.apache.solr.schema.IndexSchema$SolrQueryAnalyzer.getAnalyzer(IndexSchema.java:408)
        at org.apache.solr.schema.IndexSchema$SolrIndexAnalyzer.reusableTokenStream(IndexSchema.java:383)
        at org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.java:574)
        at org.apache.solr.search.SolrQueryParser.getFieldQuery(SolrQueryParser.java:206)
        at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1429)
        at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1317)
        at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1245)
        at org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1234)
        at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:206)
        at org.apache.solr.search.LuceneQParser.parse(LuceneQParserPlugin.java:79)
        at org.apache.solr.search.QParser.getQuery(QParser.java:143)
        at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:105)
        at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:165)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
        at org.apache.solr.handler.PingRequestHandler.handleRequestBody(PingRequestHandler.java:67)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
        at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:679)

SolrConfig.xml相关配置文件:

<!-- ping/healthcheck -->
  <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
    <lst name="invariants">
      <str name="q">solrpingquery</str>
    </lst>
    <lst name="defaults">
      <str name="echoParams">all</str>
    </lst>
  </requestHandler>
用户头像 提问 2013年 1月11日 @ Jax 上等兵 (324 威望)
编辑 2013年 1月11日 @Jax
分享到:

1个回答

+1 投票
 
最佳答案

影响solr的ping功能的配置有三个地方,如下所示:

1 schema.xml的defaultSearchField

 <defaultSearchField>name</defaultSearchField>

2 SolrConfig.xml的"/select"中的"df"属性

<requestHandler name="/select" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <int name="rows">10</int>
       <str name="df">text</str>
     </lst>
    </requestHandler>

2 SolrConfig.xml的"/admin/ping"中的"df"属性

<!-- ping/healthcheck -->
  <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
    <lst name="invariants">
      <str name="q">solrpingquery</str>
    </lst>
    <lst name="defaults">
      <str name="echoParams">all</str>
    </lst>
  </requestHandler>

优先级:"/admin/ping"中的"df"属性 >  "/select"中的"df"属性 > defaultSearchField

"/admin/ping"中不配置"df"属性的话,就使用"/select"的"df"属性,即text字段,而text在schema.xml文件中未定义,导致出现异常。

解决方法:在SolrConfig.xml的"/admin/ping"中增加 <str name="df">title</str>, 其中title为schema.xml定义的某个字段。

用户头像 回复 2013年 1月11日 @ Wukong 上等兵 (475 威望)
选中 2013年 1月11日 @Saber
提一个问题:

相关问题

+2 投票
1 回复 303 阅读
用户头像 提问 2013年 1月13日 @ Archer 上等兵 (494 威望)
+1 投票
1 回复 105 阅读
用户头像 提问 2012年 12月11日 @ Dante 上等兵 (290 威望)
+2 投票
1 回复 956 阅读
用户头像 提问 2013年 1月12日 @ Dante 上等兵 (290 威望)
+4 投票
1 回复 325 阅读
0 投票
1 回复 24 阅读
用户头像 提问 2014年 2月15日 @ Yorick 上等兵 (278 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...