15

我最近将我的 solr 实例从 1,4 升级到了 3.6。但是,现在每当我更新索引时,我的日志中似乎都会收到“未定义的字段文本”严重消息。

我的架构中确实有文本字段(自 1.4 版起有效),但以前从未必须将其声明为字段类型。这在 3.6 中有变化吗?

我的架构在这里 >> http://pastebin.com/KrCVab0U

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)
4

5 回答 5

23

这与字段类型“文本”无关。它是关于名为“文本”的字段。

您已将配置中的默认字段更改为“search_text”。请尝试将所有对“search_text”的引用重命名为“text”。如果这解决了问题,那么您知道配置中的某处您指的是“文本”字段,可能在 solrconfig.xml 中,如Solr Query - HTTP error 404 undefined field text中所建议的那样

希望能帮助到你。

于 2012-07-03T11:37:15.627 回答
9

我在我的 solrconfig.xml 文件中有这个。

<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>

如果您尚未在 schema.xml 中添加它,请添加它

<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>

这将解决您的问题。

谢谢

于 2013-03-06T06:34:57.740 回答
3

我今天也发生了。如果您在发生错误时进行查询,那么您需要在查询中使用双引号,如下所示:

文件路径:“要查询的数据”

于 2014-03-21T00:13:55.997 回答
2

在 solr 管理界面中,您可以看到当前工作的方案,然后您可以确定您是否走在正确的道路上。下面的图片说明了

4.10.2及更高版本(假设)

solr.4.10.2

低于 4.10.2 的版本。您应该使用左侧方案菜单。

solr.4.10.2

于 2014-12-13T14:23:36.183 回答
2

当我清理fq查询的一部分时,我遇到了同样的错误。消毒后,solr 收到

...&fq=type\:Product&...

虽然我有字段命名type,但错误是“未定义的字段文本”。

当我删除清理时,查询正常:

...&fq=type:Product&...

令人困惑的错误消息的原因在 solrconfig.xml 中:

<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>
于 2014-08-19T15:14:45.143 回答