3

希望你能帮助我。我刚开始维护的应用程序有问题。该应用程序使用 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章)

4

2 回答 2

1

您可能在不同的文件夹中有多个 schema.xml 文件。

您实际使用的那个应该在您的 solrconfig.xml 或 solr.xml 中以多种不同的方式指定。看看你是否有更多的 schema.xml 副本,并最终查看那些其他文件以检查对它的引用。

还要检查您是否有主从环境,在这种情况下,您可能必须手动将文件复制到主服务器和从服务器,和/或在 solrconfig.xml 中指定需要在复制时复制它。

于 2013-08-22T12:06:22.730 回答
1

您需要重新启动 solr 服务器(Tomcat/jetty)以反映 solr 配置文件(schema.xml、solrconfig.xml)中的任何更改。

于 2013-08-22T09:13:23.657 回答