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
Java 如何使用Solr 5正确创建blob索引字段?_Java_Oracle_Solr_Blob - Fatal编程技术网

Java 如何使用Solr 5正确创建blob索引字段?

Java 如何使用Solr 5正确创建blob索引字段?,java,oracle,solr,blob,Java,Oracle,Solr,Blob,我想我问题的标题解释了我需要的很多东西。我使用的是ApacheSolr5。我配置了solrconfig.xml、schema.xml和data-config.xml。它现在起作用了 但是,我需要再添加一个字段。Oracle Blob字段。首先,让我展示一下我的配置: data-config.xml 如您所见,我有1369条记录,但SOLR只索引64个文档。如果我从模式中删除字段图片,或者将index和stored属性设置为false,则SOLR import all documents 我打开S

我想我问题的标题解释了我需要的很多东西。我使用的是ApacheSolr5。我配置了solrconfig.xml、schema.xml和data-config.xml。它现在起作用了

但是,我需要再添加一个字段。Oracle Blob字段。首先,让我展示一下我的配置:

data-config.xml

如您所见,我有1369条记录,但SOLR只索引64个文档。如果我从模式中删除字段图片,或者将index和stored属性设置为false,则SOLR import all documents

我打开SOLR日志,在导入blob字段时发现此错误:

3436212 [Thread-19] WARN  org.apache.solr.handler.dataimport.SolrWriter  – Error creating document : SolrInputDocument(fields: [name=PRODUCTNAME, price=PRICE, store=STORE, picture=oracle.sql.BLOB@4130607a, _version_=1497915495941144576])
org.apache.solr.common.SolrException: ERROR: [doc=<ID>] Error adding field 'picture'='oracle.sql.BLOB@4130607a' msg=Illegal character .
    at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:176)
    at org.apache.solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.java:78)
    at org.apache.solr.update.DirectUpdateHandler2.addDoc0(DirectUpdateHandler2.java:240)
    at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:166)
    at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69)
    at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:931)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:1085)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:697)
    at org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:104)
    at org.apache.solr.handler.dataimport.SolrWriter.upload(SolrWriter.java:71)
    at org.apache.solr.handler.dataimport.DataImportHandler$1.upload(DataImportHandler.java:263)
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:511)
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:415)
    at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:330)
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:232)
    at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:416)
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:480)
    at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:461)
Caused by: java.lang.IllegalArgumentException: Illegal character .
    at org.apache.solr.common.util.Base64.base64toInt(Base64.java:150)
    at org.apache.solr.common.util.Base64.base64ToByteArray(Base64.java:117)
    at org.apache.solr.schema.BinaryField.createField(BinaryField.java:89)
    at org.apache.solr.schema.FieldType.createFields(FieldType.java:305)
    at org.apache.solr.update.DocumentBuilder.addField(DocumentBuilder.java:48)
    at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:123)
    ... 18 more
然后,我重新启动SOLR,重新加载我的内核,并再次执行完整导入。没有成功,同样的例外。我上面描述的64个文档已经导入,JSON响应中没有显示字段图片。我执行的查询是:

/select?q=*%3A*&wt=json&indent=true

我可以问一下,为什么要为BLOB编制索引,而不仅仅是存储它?你不会去搜索它,是吗-只是用搜索结果显示它?我想知道如果您为该字段设置index=false,您的索引是否会起作用。因为我尝试了所有方法使其起作用。我已经设置了index=false、stored=false和任何其他组合。力不行。同样的例外。您肯定不希望存储=false。可能值得尝试对图像进行base64编码。
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="_text" type="string" indexed="true" stored="false" multiValued="true"/>
<field name="name" type="string" indexed="true" stored="true"/>
<field name="price" type="float" indexed="true" stored="true"/>

<!-- BLOB field -->
<field name="picture" type="binary" indexed="true" stored="true"/>

<copyField source="*" dest="_text"/>
<!-- ommited solr default fields -->
Indexing completed. Added/Updated: 64 documents. Deleted 0 documents. (Duration: 04s)
Requests: 1 (0/s), Fetched: 1369 (342/s), Skipped: 0, Processed: 64 (16/s)
Started: less than a minute ago
3436212 [Thread-19] WARN  org.apache.solr.handler.dataimport.SolrWriter  – Error creating document : SolrInputDocument(fields: [name=PRODUCTNAME, price=PRICE, store=STORE, picture=oracle.sql.BLOB@4130607a, _version_=1497915495941144576])
org.apache.solr.common.SolrException: ERROR: [doc=<ID>] Error adding field 'picture'='oracle.sql.BLOB@4130607a' msg=Illegal character .
    at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:176)
    at org.apache.solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.java:78)
    at org.apache.solr.update.DirectUpdateHandler2.addDoc0(DirectUpdateHandler2.java:240)
    at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:166)
    at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69)
    at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:931)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:1085)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:697)
    at org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:104)
    at org.apache.solr.handler.dataimport.SolrWriter.upload(SolrWriter.java:71)
    at org.apache.solr.handler.dataimport.DataImportHandler$1.upload(DataImportHandler.java:263)
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:511)
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:415)
    at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:330)
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:232)
    at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:416)
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:480)
    at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:461)
Caused by: java.lang.IllegalArgumentException: Illegal character .
    at org.apache.solr.common.util.Base64.base64toInt(Base64.java:150)
    at org.apache.solr.common.util.Base64.base64ToByteArray(Base64.java:117)
    at org.apache.solr.schema.BinaryField.createField(BinaryField.java:89)
    at org.apache.solr.schema.FieldType.createFields(FieldType.java:305)
    at org.apache.solr.update.DocumentBuilder.addField(DocumentBuilder.java:48)
    at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:123)
    ... 18 more
<!-- BLOB field -->
<field name="picture" type="binary" indexed="false" stored="true"/>
/select?q=*%3A*&wt=json&indent=true