SolrJを使用してSolrコアから文書を索引付けして検索しようとしています。 Solrコアは、スキルレスモードで実行されています。SolrはスキーマレスモードでStringのmultiValuedフィールドを作成するのはなぜですか?
私は、インデックスを次のように豆いる:
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
を作成します:動的
managed-schema
内のフィールドのMULT値のセットを作成します
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();
を:
<field name="category" type="strings"/>
<field name="description" type="strings"/>
<field name="name" type="strings"/>
そして、それは例外をスロー検索した後に豆を取得しよう:
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
を使用しています。
はい、フィールドは別々に追加できます。しかし、私はスキルレスモードでフィールドを動的に作成することを期待していました。動的に作成されたStringフィールドは、複数値(文字列)のようです。 –
スキーマレスモードで作成されたすべてのフィールドは、複数値として作成されます。 – MatsLindh