0
나는 다음과 같은 필드가 : 데이터베이스에서SOLR ScriptTransformer 반환 값
- 내가 쉼표로 구분하는 int, null 또는 빈 문자열의 목록입니다 분야
property_industry_sector
을 가지고 있습니다. - Solr 스키마 구성에서 및 다중 값의 동일한 필드
property_industry_sector
이 있습니다.
내 문제는 내가 DataImportHandler
구성에서 차이 처리해야한다는 것입니다, 내 시도는 다음과 같습니다
function SplitIndustrySector(row) {
//var logger = java.util.logging.Logger.getLogger("org.apache.solr");
if(row.get('property_industry_sector') !== null) {
if(false === row.get('property_industry_sector').isEmpty()) {
var pieces = row.get('property_industry_sector').split(',');
var arr = new java.util.ArrayList();
for(var i=0, len=pieces.length; i<len; i++) {
arr.add(new java.lang.Integer(pieces[i]));
}
row.put('property_industry_sector', arr);
return row;
}
}
var arr = new java.util.ArrayList();
arr.add(new java.lang.Integer(0));
row.put('property_industry_sector', arr);
return row;
}
다음 ScriptTransformer
는 다음과 같이 정의되어있다
<entity
name="property_industry_sector_extractor"
transformer="script:SplitIndustrySector"
query="
SELECT property_industry_sector
FROM job
WHERE job.id = ${job.id}
">
<field column="property_industry_sector" name="property_industry_sector" />
</entity>
을 문제는 변압기가 무엇이든 상관없이 값이 null이거나 빈 문자열 일 때 일반적인 경우와 같습니다. 여전히 다음 예외가 발생합니다.
,property_industry_sector=property_industry_sector(1.0)={[, 0]}}]
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:493)
at java.lang.Integer.parseInt(Integer.java:514)
at org.apache.solr.schema.TrieField.createField(TrieField.java:374)
at org.apache.solr.schema.SchemaField.createField(SchemaField.java:97)
at org.apache.solr.update.DocumentBuilder.addField(DocumentBuilder.java:203)
at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:276)
at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:60)
at org.apache.solr.handler.dataimport.SolrWriter.upload(SolrWriter.java:73)
at org.apache.solr.handler.dataimport.DataImportHandler$1.upload(DataImportHandler.java:294)
at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:631)
at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:267)
at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:186)
at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:353)
at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:411)
at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:392)
빈 문자열이 어디에서 오는지 이해가 안 또한 예외 위에 삽입하려고 값으로 혼동되는 동안 (이 정수로 변환하려고하는) : 나는했습니다
property_industry_sector=property_industry_sector(1.0)={[, 0]}}]
put()
호출 전에 행을 지우려고했습니다. null
을 반환하거나, 현재 예제와 마찬가지로 하나의 값이 0
인 행을 반환합니다.