package edu.harvard.iq.dataverse.search; public class SolrField { private String nameSearchable; private String nameFacetable; private SolrType solrType; private boolean allowedToBeMultivalued; private boolean facetable; public SolrField(String name, SolrType solrType, boolean allowedToBeMultivalued, boolean facetable) { this.nameSearchable = name; this.solrType = solrType; this.allowedToBeMultivalued = allowedToBeMultivalued; this.facetable = facetable; if (allowedToBeMultivalued) { /** * @todo Should we expose this Solr-specific "_ss" fieldname here? * Instead should the field end with "FacetMultiple"? */ this.nameFacetable = name + "_ss"; } else { /** * @todo Should we expose this Solr-specific "_s" fieldname here? * Instead should the field end with "FacetSingle"? */ this.nameFacetable = name + "_s"; } } public String getNameSearchable() { return nameSearchable; } public String getNameFacetable() { return nameFacetable; } public SolrType getSolrType() { return solrType; } public Boolean isAllowedToBeMultivalued() { return allowedToBeMultivalued; } public void setAllowedToBeMultivalued(boolean allowedToBeMultivalued) { this.allowedToBeMultivalued = allowedToBeMultivalued; } public boolean isFacetable() { return facetable; } public enum SolrType { /** * @todo: make this configurable from text_en to text_general or * non-English languages? We changed it to text_en to improve English * language searching in https://github.com/IQSS/dataverse/issues/444 * * We want to get away from always using "text_en" (especially to * support range queries) in * https://github.com/IQSS/dataverse/issues/370 */ STRING("string"), TEXT_EN("text_en"), INTEGER("int"), LONG("long"), DATE("text_en"), EMAIL("text_en"); private String type; private SolrType(String string) { type = string; } public String getType() { return type; } } }