希望你能帮助我。我正在维护一个应用程序,遇到了一个问题。该应用程序使用SOLR进行索引,并且应该从数据库中填充两个核心的数据。
当重新索引时,我不断收到以下错误信息:
Aug 22, 2013 10:09:49 AM org.apache.solr.common.SolrException log
如您所见,编辑器ID在模式中存在。在我们从数据表获取数据时,表名已重命名为editor_user_id。当我将schema.xml规则从editor_id改为editor_user_id时,它仍会返回上述错误,好像schema.xml是无关紧要的。
我是否忽略了更新模式以匹配数据库表的方法?
如何消除此错误的任何建议都将不胜感激,因为当涉及SOLR/LUCENE/TOMCAT设置时,我有点新手。
谢谢。
编辑:
以下是完整的堆栈跟踪:
2013年8月22日11:47:52 org.apache.solr.common.SolrException日志 严重错误:org.apache.solr.common.SolrException:未定义字段:“editor_id” 在org.apache.solr.schema.IndexSchema.getField(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)处 在org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:591)处 在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.handleRequestBody(ContentStreamHandlerBase.java:74)处 在org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)处 在org.apache.solr.core.SolrCore.execute(SolrCore.java:1816)处 在org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:448)处 在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.StandardWrapperValve.invoke(StandardWrapperValve.java:233)处 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)处 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)处 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)处 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)处 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)处 在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)处
当重新索引时,我不断收到以下错误信息:
Aug 22, 2013 10:09:49 AM org.apache.solr.common.SolrException log
SEVERE: org.apache.solr.common.SolrException: undefined field: "editor_id"
at org.apache.solr.schema.IndexSchema.getField(IndexSchema.java:965)
[... Stack trace ...]
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>
如您所见,编辑器ID在模式中存在。在我们从数据表获取数据时,表名已重命名为editor_user_id。当我将schema.xml规则从editor_id改为editor_user_id时,它仍会返回上述错误,好像schema.xml是无关紧要的。
我是否忽略了更新模式以匹配数据库表的方法?
如何消除此错误的任何建议都将不胜感激,因为当涉及SOLR/LUCENE/TOMCAT设置时,我有点新手。
谢谢。
编辑:
以下是完整的堆栈跟踪:
2013年8月22日11:47:52 org.apache.solr.common.SolrException日志 严重错误:org.apache.solr.common.SolrException:未定义字段:“editor_id” 在org.apache.solr.schema.IndexSchema.getField(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)处 在org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:591)处 在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.handleRequestBody(ContentStreamHandlerBase.java:74)处 在org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)处 在org.apache.solr.core.SolrCore.execute(SolrCore.java:1816)处 在org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:448)处 在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.StandardWrapperValve.invoke(StandardWrapperValve.java:233)处 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)处 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)处 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)处 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)处 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)处 在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)处