根据SolrEntityProcessor 只为子实体调用一次,我们可以在 https://issues.apache.org/jira/browse/SOLR-3336?page=com.atlassian.jira.plugin.system.issuetabpanels 中使用修补过的 SolrEntityProcessor : comment-tabpanel解决子实体问题。
我尝试将 jar 文件重命名为 zip,然后尝试替换修补的文件,但由于我只有 java 文件,我无法用类文件替换它。所以我放弃了这个想法。
这就是我尝试过的。我反编译了 solr 4.2 包中的原始 jar solr-dataimporthandler-4.2.0.jar。然后我替换补丁文件。并尝试编译文件以再次制作 jar。但我开始收到编译错误。
.\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:397: ')' 预期
/* 432 / if (XPathEntityProcessor.2.this.val$isEnd.get()) { ^ .\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:397: 预期 / 432 / if (XPathEntityProcessor.2. this.val$isEnd.get()) { ^ .\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:397: not a statement / 432 / if (XPathEntityProcessor.2.this.val$isEnd.get ()) { ^ .\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:397: 表达式的非法开始 / 432 */ if (XPathEntityProcessor.2.this.val$isEnd.get()) { ^ .\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:397: ';' 预期的
/* 432 */ if (XPathEntityProcessor.2.this.val$isEnd.get()) { ^ .\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:397: ';' 预期的
/* 432 / if (XPathEntityProcessor.2.this.val$isEnd.get()) { ^ .\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:398: not a statement / 433 */ XPathEntityProcessor. 2.this.val$throwExp.set(false); ^ .\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:398: ';' 预期的
/* 433 / XPathEntityProcessor.2.this.val$throwExp.set(false); ^ .\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:406: 不是语句 / 442 */ XPathEntityProcessor.2.this.val$isEnd.set(true); ^ .\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:406: ';' 预期的
/* 442 / XPathEntityProcessor.2.this.val$isEnd.set(true); ^ .\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:409: 不是声明 / 445 */ XPathEntityProcessor.2.this.offer(row); ^ .\org\apache\solr\handler\dataimport\XPathEntityProcessor.java:409: ';' 预期的
/* 445 */ XPathEntityProcessor.2.this.offer(row); ^ 12 个错误
知道如何针对此问题修补 Solr4.2。