【发布时间】:2016-11-08 13:12:24
【问题描述】:
我正在尝试使用 SolrJ 从 Solr 核心索引和搜索文档。 Solr 核心在无模式模式下运行。
我有以下 bean 要索引:
public class Product {
@Field("id")
private String id;
@Field(value="name")
private String name;
@Field(value="category")
private String category;
@Field(value="description")
private String description;
...
}
索引文档时,它会在托管架构中创建 multiValued 字段 strings:
Product p = new Product();
p.setId("0001");
p.setName("Cat 1");
p.setDescription("Description");
SolrClient client = new
HttpSolrClient("http://localhost:8983/solr/product");
client.addBean(p);
client.commit();
在managed-schema 中动态创建多值字段集:
<field name="category" type="strings"/>
<field name="description" type="strings"/>
<field name="name" type="strings"/>
在搜索后尝试获取 bean 时会引发异常:
SolrQuery query = new SolrQuery();
query.set("q", "*:*");
QueryResponse response = client.query(query);
List<Product> products = response.getBeans(Product.class);
例外:
java.lang.IllegalArgumentException:
Can not set java.lang.String field Product.name to java.util.ArrayList
我该如何解决这个问题并让 Solr 创建单值字段?
我正在使用solr-6.2.1 和solr-solrj-5.5.0.jar。
【问题讨论】: