【问题标题】:Solr DIH and SAXParseException Content is not allowed in prolog序言中不允许 Solr DIH 和 SAXParseException 内容
【发布时间】:2014-10-15 11:32:04
【问题描述】:

我是 Solr 的新手,正在尝试使用 Solr 的 DIH 为文件系统建立索引。有趣的是,它工作得很好——有一段时间。现在 DIH 不会初始化并且我不断收到 SAXParseException: Content is not allowed in prolog。

有什么想法吗? 我在 Debian 上使用 Solr 3.6.0。我用十六进制编辑器检查了配置文件,但什么也没找到。

这是 data-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource type="BinFileDataSource" name="bin"/>
<document>      
    <entity name="files"
        processor="FileListEntityProcessor"
        fileName=".*.(pdf)|(doc)|(docx)|(ppt)|(pptx)"
        baseDir="/mnt/C"
        rootEntity="false"
        dataSource="null"
        recursive="true"
        onError="skip">
        <field name="id" column="fileAbsolutePath"/>
        <field name="lastModified" column="fileLastModified"/>
        <entity name="f"
            processor="TikaEntityProcessor"
            url="${files.fileAbsolutePath}"
            dataSource="bin"
            format="text"
            onError="skip">
            <field name="fileName" column="file"/>
            <field name="author" column="Author" meta="true"/>
            <field name="title" column="title" meta="true"/>
            <field name="text" column="text"/>
        </entity>
    </entity>
</document>
</dataConfig>

还有错误:

org.apache.solr.handler.dataimport.DataImportHandlerException: Exception occurred while initializing context
at org.apache.solr.handler.dataimport.DataImporter.loadDataConfig(DataImporter.java:231)
at org.apache.solr.handler.dataimport.DataImporter.<init>(DataImporter.java:119)
at org.apache.solr.handler.dataimport.DataImportHandler.handleRequestBody(DataImportHandler.java:168)
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) Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:391)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1404)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1014)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:819)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:748)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:239)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:288)
at org.apache.solr.handler.dataimport.DataImporter.loadDataConfig(DataImporter.java:216)
... 18 more

【问题讨论】:

  • 它看起来像不正确的 xml 配置。使用一些服务来测试它 - freeformatter.com/xml-formatter.html
  • 我在 data-config.xml 的末尾没有看到 &lt;/dataConfig&gt; ...
  • 我不知道为什么它没有出现在我上面的帖子中,但是文件中有。

标签: xml solr dih


【解决方案1】:

XML 为我验证。错误点在第 1 行,第 1 个字符。有时可能是 Byte-Order-mark 问题,这是文件开头的一个不可见字符。

也许您在某个编辑器中编辑了文件,但过于兴奋并明确添加了 BOM。重新检查十六进制编辑器中的前 1-2 个字符。或者尝试将此内容复制到一个非常纯文本的编辑器中,看看是否可行。

【讨论】:

  • 根据 ghex 没有 BOM。复制内容也无济于事。我什至在 Notepad++ 中重新输入了整个内容,但错误仍然存​​在。如果不是 BOM,还能是什么?
  • 是否有可能有两个文件,而您正在查看错误的文件?你可以放一个示例 DIH 文件,看看它是否在管理 UI 中被读取。
  • 看起来你的相对路径有一些问题。或者权限。如果您使用的是 Windows,请尝试使用 ProcessMonitor 之类的内容,然后查看它实际在哪里查找该文件。在 Linux 上,您可以使用 trace/strace/truss/dtrace(不同的系统 - 不同的实用程序)达到相同的效果。
  • 感谢您的努力,很抱歉回复晚了。恐怕我在这个问题上根本没有任何进展,它似乎不是相对路径或权限
猜你喜欢
  • 1970-01-01
  • 2011-04-09
  • 2023-04-10
  • 2016-10-11
  • 2014-07-23
  • 2020-07-03
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多