1

目前,我在 Solr 4.1 与 Lucene 4.1 结合时遇到以下问题。

我有一个像这样的 Solr-Bean:

import org.apache.solr.client.solrj.beans.Field;

public final class Bean {

    @Field
    private int someInt;
    @Field
    private String someString;
    //Fields like this are just being updated for easier use of the bean
    private List<Integer> someStringSplitIntoIntegers

        //setters, rest is the same:
        public void setSomeInt(int someInt) {
            this.someInt = someInt;
        }

        //getters straightforward...

}

现在我想通过 HttpSolrServer.addBean(bean) 将 bean 添加到 Solr 数据库,我得到以下异常:

Exception in thread "main" org.apache.solr.client.solrj.beans.BindingException: Invalid setter method. Must have one and only one parameter
    at org.apache.solr.client.solrj.beans.DocumentObjectBinder$DocField.storeType(DocumentObjectBinder.java:202)
    at org.apache.solr.client.solrj.beans.DocumentObjectBinder$DocField.<init>(DocumentObjectBinder.java:150)
    at org.apache.solr.client.solrj.beans.DocumentObjectBinder.collectInfo(DocumentObjectBinder.java:119)
    at org.apache.solr.client.solrj.beans.DocumentObjectBinder.getDocFields(DocumentObjectBinder.java:99)
    at org.apache.solr.client.solrj.beans.DocumentObjectBinder.toSolrInputDocument(DocumentObjectBinder.java:73)
    at org.apache.solr.client.solrj.SolrServer.addBean(SolrServer.java:136)
    at org.apache.solr.client.solrj.SolrServer.addBean(SolrServer.java:125)
    (...my call...)

但我不明白为什么。我多次为每个 setter 提供多个参数的类,但没关系(它甚至是由 Eclipse 生成的)。

现在的问题是:

我错过了什么?这可能是什么原因?schema.xml 中缺少的条目是否会导致这些错误(我怀疑...)?

提前致谢。

马丁·布劳恩

4

2 回答 2

3

Field可以直接在 setter 方法上使用注释:

 @Field("cat")
   public void setCategory(String[] c){
       this.categories = c;
   }

确保您int在 solr 中有一个schema.xml名为 someInt的字段

干杯

于 2013-03-04T15:15:08.517 回答
0

已经自己修好了。

从评论:

行。似乎是固定的。我也在 getter 上使用了@Field,这会导致错误。我已经尝试将其删除,但随后又出现了另一个错误。所以我把它改回来了。此外,Solr Bean 不符合 boolean isBoolean() 方法(这导致了新错误)。– Martin Braun 刚刚编辑

于 2013-03-04T15:17:45.757 回答