希望你能帮助我。我刚开始维护的应用程序有问题。该应用程序使用 SOLR 进行索引,并且应该使用数据库中的数据填充两个核心。
重新索引时,我不断收到以下错误:
2013 年 8 月 22 日上午 10:09:49 org.apache.solr.common.SolrException 日志
严重:org.apache.solr.common.SolrException:未定义字段:“editor_id”
at org.apache.solr.schema.IndexSchema.getField(IndexSchema.java:965)
[... 堆栈跟踪 ...]
at java.lang.Thread.run(Thread.java:679)
我的这个核心的 schema.xml:
<solrQueryParser defaultOperator="AND" />
<fields>
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="name" type="text_nl" indexed="true" stored="false"/>
<field name="platform" type="string" indexed="true" stored="false" multiValued="false"/>
<field name="date" type="date" indexed="true" stored="false" multiValued="false"/>
<field name="content" type="text_nl" indexed="true" stored="false"/>
<field name="division_id" type="long" indexed="true" stored="false" multiValued="false"/>
<field name="division" type="text_nl" indexed="true" stored="false" multiValued="false"/>
<field name="subdivision_id" type="long" indexed="true" stored="false" multiValued="false"/>
<field name="subdivision" type="text_nl" indexed="true" stored="false" multiValued="false"/>
<field name="editor_id" type="long" indexed="true" stored="false" multiValued="false"/>
<field name="editor" type="text_nl" indexed="true" stored="false" multiValued="false"/>
<field name="status" type="text_nl" indexed="true" stored="false" multiValued="false"/>
<field name="status_id" type="long" indexed="true" stored="false" multiValued="false"/>
<field name="lines" type="text_nl" indexed="true" stored="false" multiValued="true"/>
<field name="text" type="text_nl" indexed="true" stored="false" multiValued="true"/>
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="suggest_nl" type="text_nl_suggest" indexed="true" stored="true" multiValued="true"/>
<copyField source="*" dest="suggest_nl"/>
</fields>
<uniqueKey>id</uniqueKey>
如您所见, editor_id 存在于模式中。在数据库中,我们从表名中获取数据已重命名为 editor_user_id。当我将 editor_id 的 schema.xml 规则重命名为 editor_user_id 时,它仍然会返回上述错误,就好像 schema.xml 无关紧要一样。
我是否在这里遗漏了有关如何更新架构以匹配数据库表的内容?
任何有关如何摆脱此错误的建议都将不胜感激,因为我在 SOLR/LUCENE/TOMCAT 设置方面有点菜鸟。
谢谢。
编辑:
这是完整的堆栈跟踪:
2013 年 8 月 22 日上午 11:47:52 org.apache.solr.common.SolrException 日志严重:org.apache.solr.common.SolrException:未定义字段:org.apache.solr.schema.IndexSchema.getField 的“editor_id” (IndexSchema.java:965) 在 org.apache.solr.schema.IndexSchema.getCopyFieldsList(IndexSchema.java:1077) 在 org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:274) 在 org.apache。 solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.java:73) 在 org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:201) 在 org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory. java:69) 在 org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51) 在 org.apache.solr。update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:455) at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:591) at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd( DistributedUpdateProcessor.java:350) 在 org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100) 在 org.apache.solr.handler.loader.XMLLoader.processUpdate(XMLLoader.java:246) 在 org .apache.solr.handler.loader.XMLLoader.load(XMLLoader.java:173) 在 org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:92) 在 org.apache.solr.handler.ContentStreamHandlerBase。 org.apache.solr.handler 的 handleRequestBody(ContentStreamHandlerBase.java:74)。RequestHandlerBase.handleRequest(RequestHandlerBase.java:135) at org.apache.solr.core.SolrCore.execute(SolrCore.java:1816) at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:448) at org .apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:269) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain .java:206) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 在 org.apache.catalina。 core.StandardHostValve.invoke(StandardHostValve.java:127) 在 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) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 在 org.apache.tomcat.util.net.JIoEndpoint $Worker.run(JIoEndpoint.java:489) 在 java.lang.Thread.run(Thread.java:679)在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:第489章)在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:第489章)