4444import java .lang .reflect .Field ;
4545import java .util .ArrayList ;
4646import java .util .List ;
47+ import java .util .Map ;
4748import java .util .Set ;
4849import java .util .concurrent .ExecutionException ;
4950import java .util .concurrent .Future ;
@@ -451,11 +452,11 @@ public Response clearOrphans(@QueryParam("sync") String sync) {
451452 public String getSolrSchema () {
452453
453454 StringBuilder sb = new StringBuilder ();
454-
455- for (DatasetFieldType datasetField : datasetFieldService .findAllOrderedByName ()) {
455+ Map < Long , JsonObject > cvocTermUriMap = datasetFieldSvc . getCVocConf ( true );
456+ for (DatasetFieldType datasetFieldType : datasetFieldService .findAllOrderedByName ()) {
456457 //ToDo - getSolrField() creates/returns a new object - just get it once and re-use
457- String nameSearchable = datasetField .getSolrField ().getNameSearchable ();
458- SolrField .SolrType solrType = datasetField .getSolrField ().getSolrType ();
458+ String nameSearchable = datasetFieldType .getSolrField ().getNameSearchable ();
459+ SolrField .SolrType solrType = datasetFieldType .getSolrField ().getSolrType ();
459460 String type = solrType .getType ();
460461 if (solrType .equals (SolrField .SolrType .EMAIL )) {
461462 /**
@@ -474,7 +475,7 @@ public String getSolrSchema() {
474475 */
475476 logger .info ("email type detected (" + nameSearchable + ") See also https://github.com/IQSS/dataverse/issues/759" );
476477 }
477- String multivalued = datasetField . getSolrField ().isAllowedToBeMultivalued (). toString ( );
478+ String multivalued = Boolean . toString ( datasetFieldType . getSolrField ().isAllowedToBeMultivalued ()|| cvocTermUriMap . containsKey ( datasetFieldType . getId ()) );
478479 // <field name="datasetId" type="text_general" multiValued="false" stored="true" indexed="true"/>
479480 sb .append (" <field name=\" " + nameSearchable + "\" type=\" " + type + "\" multiValued=\" " + multivalued + "\" stored=\" true\" indexed=\" true\" />\n " );
480481 }
0 commit comments