Je suis en train d'indexer un document avec des champs dynamiques et l'ont défini:printemps données Solr avec de champ dynamique ne fonctionne pas
@SolrDocument(solrCoreName = "collection1")
public class SolrProduct {
@Field
String id;
@Field
String name;
@Field("mappedField_*")
Map<String, List<String>> mappedFieldValues;
}
Et le repo suivant:
public interface SolrProductRepository extends SolrCrudRepository<SolrProduct, String> { }
Mon schéma Solr est aussi suit:
<field name="name" type="text_ws" indexed="true" stored="true"/>
<dynamicField name="mappedField_*" type="text_general" indexed="true" stored="true"/>
Je suis en train d'enregistrer un nouveau document dans lequel la valeur de la carte mappedFieldValues est:
{thermometer=[yes], camera=[yes], vibration=[Motion], brand=[Philips]}
Pourtant, je reçois l'exception suivante:
org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException:
ERROR: [doc=5530cbd78b15a5f18dfe3d28] unknown field 'thermometer' at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:495) at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:199) at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:118) at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:116) at org.springframework.data.solr.core.SolrTemplate$4.doInSolr(SolrTemplate.java:178) at org.springframework.data.solr.core.SolrTemplate$4.doInSolr(SolrTemplate.java:175) at org.springframework.data.solr.core.SolrTemplate.execute(SolrTemplate.java:132) at org.springframework.data.solr.core.SolrTemplate.saveBean(SolrTemplate.java:175) at org.springframework.data.solr.core.SolrTemplate.saveBean(SolrTemplate.java:169) at org.springframework.data.solr.repository.support.SimpleSolrRepository.save(SimpleSolrRepository.java:149) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:416) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:401) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:373) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) at $Proxy60.save(Unknown Source) at com.example.Indexer.indexAll(Indexer.java:29)
Il me semble que le ressort des données -solr n'appelle pas correctement solr avec le nom des champs dynamiques (au lieu de mappedField_thermometer, il appelle simplement thermomètre).
Des idées?
s'il vous plaît jeter un oeil à celui-ci http: // stackoverflow. com/questions/29307653/comment-sérialiser-désérialiser-une-carte-avec-solr-lucene/29340019 # 29340019 –