Я пытаюсь индексировать и искать документы из ядра Solr, используя SolrJ. Ядро Solr работает в режиме схематизации.Почему Solr создает многозначное поле для String в режиме схемы?
У меня есть следующий боб индексировать:
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"/>
А при попытке получить бобы после поиска он бросает исключение:
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 являются многозначными (строки). –
Все поля, созданные в режиме schemaless, создаются как многозначные. – MatsLindh