Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用oracle数据库在solr中索引文件时出错_Sql_Oracle_Apache_Solr_Apache Tika - Fatal编程技术网

Sql 使用oracle数据库在solr中索引文件时出错

Sql 使用oracle数据库在solr中索引文件时出错,sql,oracle,apache,solr,apache-tika,Sql,Oracle,Apache,Solr,Apache Tika,我通过以下方式配置了我的data_config.xml: <entity name="bop_anexo" processor="SqlEntityProcessor" query="SELECT ID_BOP_ANEXO, ID_BOP_REFERENCIA, NM_ANEXO, TP_ANEXO,

我通过以下方式配置了我的data_config.xml:

<entity name="bop_anexo" processor="SqlEntityProcessor" query="SELECT ID_BOP_ANEXO,
                        ID_BOP_REFERENCIA,
                        NM_ANEXO,
                        TP_ANEXO,
                        DECODE64_CLOB3(REPLACE(ANEXO, 'data:application/pdf;base64,', '')) as ANEXO_CONVERTIDO,
                        ANEXO,
                        MINIATURA,
                        ID_SITUACAO,
                        DT_MANUTENCAO,
                        ID_USUARIO_MANUTENCAO
                FROM BOP_ANEXO WHERE TP_ANEXO = 'pdf'" transformer="ClobTransformer">
    <field column="ID_BOP_ANEXO" name="id"/>
    <field column="ID_BOP_REFERENCIA" name="id_bop_referencia"/>
    <field column="NM_ANEXO" name="nm_anexo"/>
    <field column="TP_ANEXO" name="tp_anexo"/>
    <field column="ANEXO_CONVERTIDO" name="anexo_convertido" clob="true"/> 
    <field column="ANEXO" name="anexo" clob="true"/> 
    <field column="ID_SITUACAO" name="id_situacao"/>
    <field column="DT_MANUTENCAO" name="dt_manutencao"/>
    <field column="ID_USUARIO_MANUTENCAO" name="id_usuario_manutencao"/>
</entity>
当我搜索solr query时,我会看到以下结果:

org.apache.solr.common.SolrException: TransactionLog doesn't know how to serialize class oracle.sql.CLOB; try implementing ObjectResolver?
at org.apache.solr.update.TransactionLog$1.resolve(TransactionLog.java:100)
at org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:206)
at org.apache.solr.common.util.JavaBinCodec.writeSolrInputDocument(JavaBinCodec.java:496)
at org.apache.solr.update.TransactionLog.write(TransactionLog.java:361)
at org.apache.solr.update.UpdateLog.add(UpdateLog.java:429)
at org.apache.solr.update.UpdateLog.add(UpdateLog.java:415)
"responseHeader":{
"status":0,
"QTime":32,
"params":{
  "q":"*:*",
  "indent":"on",
  "wt":"json",
  "_":"1486041075119"}},
  "response":{"numFound":7,"start":0,"docs":[
      {
        "id_bop_referencia":"902",
        "miniatura":"oracle.sql.CLOB@3c0c5a58",
        "tp_anexo":"pdf",
        "anexo":"data:application/pdf;base64,JVBERi0xLjQKJeLjz9MKN...",
        "anexo_convertido":"%PDF-1.4\n%âãÏÓ\n4 0 obj\n<</Type/XObject/ColorSpace/DeviceRGB/Subtype/Image/BitsPerComponent 8/Width 45/Length 4609/Height 48/Filter/DCTDecode>>stream\nÿØÿà\u0000\...",
        "id":"971",
        "nm_anexo":"report.pdf",
        "_version_":1557683947554471936},
          {

我有一个base64_clob文件类型,我使用sql查询将其转换为oracle数据库,但solr和tika没有为正确的文本编制索引,正如我向您展示的那样。有人知道我能做什么

根据错误消息,您只需要为该类型实现ObjectResolver,这样Solr就知道如何序列化

允许扩展JavaBinCodec以支持任意数据类型的序列化。此接口的实现者编写一个方法,使用现有的JavaBinCodec序列化给定对象


您是否在select语句中未进行任何转换就尝试过它。就用这个变压器?可能存在双重工作。是的,但无法转换为文本,因为文件位于base 64中。然后尝试删除转换器,因为您已经解码了Oracle层上的CLOB。虽然你想对文件本身做什么还不清楚。我这样做了,但对我来说似乎是相同的错误。