private List<FieldType> getFieldTypes(SchemaRepresentation schemaRepresentation) { List<FieldType> fieldTypes = new LinkedList<>(); for (FieldTypeDefinition fd : schemaRepresentation.getFieldTypes()) { FieldType ft = new FieldType(); ft.setName((String) fd.getAttributes().get("name")); ft.setClazz((String) fd.getAttributes().get("class")); Object multiValued = fd.getAttributes().get("multiValued"); if (multiValued != null) { ft.setMultiValued((Boolean) multiValued); } fieldTypes.add(ft); } return fieldTypes; }
@SuppressWarnings("unchecked") private static void fillFieldTypeDefinition(FieldTypeDefinition fieldTypeDefinition, NamedList<Object> fieldTypeNamedList) { Map<String, Object> fieldTypeAttributes = extractAttributeMap(fieldTypeNamedList); fieldTypeDefinition.setAttributes(fieldTypeAttributes); NamedList<Object> analyzerNamedList = (NamedList<Object>) fieldTypeNamedList.get("analyzer"); if (analyzerNamedList != null) { AnalyzerDefinition analyzerDefinition = createAnalyzerDefinition(analyzerNamedList); fieldTypeDefinition.setAnalyzer(analyzerDefinition); AnalyzerDefinition indexAnalyzerDefinition = createAnalyzerDefinition(indexAnalyzerNamedList); fieldTypeDefinition.setIndexAnalyzer(indexAnalyzerDefinition); fieldTypeDefinition.setQueryAnalyzer(queryAnalyzerDefinition); AnalyzerDefinition multiTermAnalyzerDefinition = createAnalyzerDefinition(multiTermAnalyzerNamedList); fieldTypeDefinition.setMultiTermAnalyzer(multiTermAnalyzerDefinition); fieldTypeDefinition.setSimilarity(similarityAttributes);
private void createFieldTypeDefinitions(SolrClient solrClient) throws IOException { FieldTypeDefinition analyzedFieldTypeDefinition = new FieldTypeDefinition(); queryAnalyzerDefinition1.setFilters(queryFilterAttributes1); analyzedFieldTypeDefinition.setAttributes(analyzedFieldTypeAttributes); analyzedFieldTypeDefinition.setIndexAnalyzer(indexAnalyzerDefinition1); analyzedFieldTypeDefinition.setQueryAnalyzer(queryAnalyzerDefinition1); FieldTypeDefinition rawFieldTypeDefinition = new FieldTypeDefinition(); queryAnalyzerDefinition2.setFilters(queryFilterAttributes2); rawFieldTypeDefinition.setAttributes(rawFieldTypeAttributes); rawFieldTypeDefinition.setIndexAnalyzer(indexAnalyzerDefinition2); rawFieldTypeDefinition.setQueryAnalyzer(queryAnalyzerDefinition2);
private static NamedList<Object> createAddFieldTypeNamedList(FieldTypeDefinition fieldTypeDefinition) { final NamedList<Object> addFieldTypeNamedList = new NamedList<>(); addFieldTypeNamedList.addAll(fieldTypeDefinition.getAttributes()); AnalyzerDefinition analyzerDefinition = fieldTypeDefinition.getAnalyzer(); if (analyzerDefinition != null) { NamedList<Object> analyzerNamedList = createAnalyzerNamedList(analyzerDefinition); addFieldTypeNamedList.add("analyzer", analyzerNamedList); } AnalyzerDefinition indexAnalyzerDefinition = fieldTypeDefinition.getIndexAnalyzer(); if (indexAnalyzerDefinition != null) { NamedList<Object> indexAnalyzerNamedList = createAnalyzerNamedList(indexAnalyzerDefinition); addFieldTypeNamedList.add("indexAnalyzer", indexAnalyzerNamedList); } AnalyzerDefinition queryAnalyzerDefinition = fieldTypeDefinition.getQueryAnalyzer(); if (queryAnalyzerDefinition != null) { NamedList<Object> queryAnalyzerNamedList = createAnalyzerNamedList(queryAnalyzerDefinition); addFieldTypeNamedList.add("queryAnalyzer", queryAnalyzerNamedList); } AnalyzerDefinition multiTermAnalyzerDefinition = fieldTypeDefinition.getMultiTermAnalyzer(); if (multiTermAnalyzerDefinition != null) { NamedList<Object> multiTermAnalyzerNamedList = createAnalyzerNamedList(multiTermAnalyzerDefinition); addFieldTypeNamedList.add("multiTermAnalyzer", multiTermAnalyzerNamedList); } Map<String, Object> similarityAttributes = fieldTypeDefinition.getSimilarity(); if (similarityAttributes != null && !similarityAttributes.isEmpty()) { addFieldTypeNamedList.add("similarity", new NamedList<>(similarityAttributes)); } return addFieldTypeNamedList; }
/** * Adds (or replaces) a type definition for the {@link #addFields() fields used by this translation}. * * @throws SolrServerException if communicating with the Solr server failed * @throws IOException if communicating with the Solr server failed */ protected void addFieldType() throws SolrServerException, IOException { FieldTypeDefinition fieldTypeDefinition = new FieldTypeDefinition(); Map<String, Object> fieldTypeAttributes = new LinkedHashMap<>(); String name = "text_general_" + getTargetLocale().toString(); fieldTypeAttributes.put("name", name); fieldTypeAttributes.put("class", "solr.TextField"); fieldTypeDefinition.setAttributes(fieldTypeAttributes); AnalyzerDefinition analyzerDefinition = new AnalyzerDefinition(); analyzerDefinition.setAttributes( Collections.<String, Object>singletonMap("class", getAnalyzerType())); fieldTypeDefinition.setAnalyzer(analyzerDefinition); try { // The current version (5.5) of SolrJ/EmbeddedSolrServer doesn't support getting schema information, // so we do this the ugly way: try to add, check for errors, try to replace UpdateResponse response = new SchemaRequest.AddFieldType(fieldTypeDefinition).process(getClient()); if (response.getResponse().get("errors") != null) { response = new SchemaRequest.ReplaceFieldType(fieldTypeDefinition).process(getClient()); } this.logger.debug(response.toString()); } catch (Exception ex) { } }
@SuppressWarnings("unchecked") private static FieldTypeDefinition createFieldTypeDefinition(NamedList<Object> fieldTypeNamedList) { FieldTypeDefinition fieldTypeDefinition = new FieldTypeDefinition(); fillFieldTypeDefinition(fieldTypeDefinition, fieldTypeNamedList); return fieldTypeDefinition; }
@SuppressWarnings("unchecked") private static void fillFieldTypeDefinition(FieldTypeDefinition fieldTypeDefinition, NamedList<Object> fieldTypeNamedList) { Map<String, Object> fieldTypeAttributes = extractAttributeMap(fieldTypeNamedList); fieldTypeDefinition.setAttributes(fieldTypeAttributes); NamedList<Object> analyzerNamedList = (NamedList<Object>) fieldTypeNamedList.get("analyzer"); if (analyzerNamedList != null) { AnalyzerDefinition analyzerDefinition = createAnalyzerDefinition(analyzerNamedList); fieldTypeDefinition.setAnalyzer(analyzerDefinition); AnalyzerDefinition indexAnalyzerDefinition = createAnalyzerDefinition(indexAnalyzerNamedList); fieldTypeDefinition.setIndexAnalyzer(indexAnalyzerDefinition); fieldTypeDefinition.setQueryAnalyzer(queryAnalyzerDefinition); AnalyzerDefinition multiTermAnalyzerDefinition = createAnalyzerDefinition(multiTermAnalyzerNamedList); fieldTypeDefinition.setMultiTermAnalyzer(multiTermAnalyzerDefinition); fieldTypeDefinition.setSimilarity(similarityAttributes);
private void createFieldTypeDefinitions(SolrClient solrClient) throws IOException { FieldTypeDefinition analyzedFieldTypeDefinition = new FieldTypeDefinition(); queryAnalyzerDefinition1.setFilters(queryFilterAttributes1); analyzedFieldTypeDefinition.setAttributes(analyzedFieldTypeAttributes); analyzedFieldTypeDefinition.setIndexAnalyzer(indexAnalyzerDefinition1); analyzedFieldTypeDefinition.setQueryAnalyzer(queryAnalyzerDefinition1); FieldTypeDefinition rawFieldTypeDefinition = new FieldTypeDefinition(); queryAnalyzerDefinition2.setFilters(queryFilterAttributes2); rawFieldTypeDefinition.setAttributes(rawFieldTypeAttributes); rawFieldTypeDefinition.setIndexAnalyzer(indexAnalyzerDefinition2); rawFieldTypeDefinition.setQueryAnalyzer(queryAnalyzerDefinition2);
private static NamedList<Object> createAddFieldTypeNamedList(FieldTypeDefinition fieldTypeDefinition) { final NamedList<Object> addFieldTypeNamedList = new NamedList<>(); addFieldTypeNamedList.addAll(fieldTypeDefinition.getAttributes()); AnalyzerDefinition analyzerDefinition = fieldTypeDefinition.getAnalyzer(); if (analyzerDefinition != null) { NamedList<Object> analyzerNamedList = createAnalyzerNamedList(analyzerDefinition); addFieldTypeNamedList.add("analyzer", analyzerNamedList); } AnalyzerDefinition indexAnalyzerDefinition = fieldTypeDefinition.getIndexAnalyzer(); if (indexAnalyzerDefinition != null) { NamedList<Object> indexAnalyzerNamedList = createAnalyzerNamedList(indexAnalyzerDefinition); addFieldTypeNamedList.add("indexAnalyzer", indexAnalyzerNamedList); } AnalyzerDefinition queryAnalyzerDefinition = fieldTypeDefinition.getQueryAnalyzer(); if (queryAnalyzerDefinition != null) { NamedList<Object> queryAnalyzerNamedList = createAnalyzerNamedList(queryAnalyzerDefinition); addFieldTypeNamedList.add("queryAnalyzer", queryAnalyzerNamedList); } AnalyzerDefinition multiTermAnalyzerDefinition = fieldTypeDefinition.getMultiTermAnalyzer(); if (multiTermAnalyzerDefinition != null) { NamedList<Object> multiTermAnalyzerNamedList = createAnalyzerNamedList(multiTermAnalyzerDefinition); addFieldTypeNamedList.add("multiTermAnalyzer", multiTermAnalyzerNamedList); } Map<String, Object> similarityAttributes = fieldTypeDefinition.getSimilarity(); if (similarityAttributes != null && !similarityAttributes.isEmpty()) { addFieldTypeNamedList.add("similarity", new NamedList<>(similarityAttributes)); } return addFieldTypeNamedList; }
/** * Adds (or replaces) a type definition for the {@link #addFields() fields used by this translation}. * * @throws SolrServerException if communicating with the Solr server failed * @throws IOException if communicating with the Solr server failed */ protected void addFieldType() throws SolrServerException, IOException { FieldTypeDefinition fieldTypeDefinition = new FieldTypeDefinition(); Map<String, Object> fieldTypeAttributes = new LinkedHashMap<>(); String name = "text_general_" + getTargetLocale().toString(); fieldTypeAttributes.put("name", name); fieldTypeAttributes.put("class", "solr.TextField"); fieldTypeDefinition.setAttributes(fieldTypeAttributes); AnalyzerDefinition analyzerDefinition = new AnalyzerDefinition(); analyzerDefinition.setAttributes( Collections.<String, Object>singletonMap("class", getAnalyzerType())); fieldTypeDefinition.setAnalyzer(analyzerDefinition); try { // The current version (5.5) of SolrJ/EmbeddedSolrServer doesn't support getting schema information, // so we do this the ugly way: try to add, check for errors, try to replace UpdateResponse response = new SchemaRequest.AddFieldType(fieldTypeDefinition).process(getClient()); if (response.getResponse().get("errors") != null) { response = new SchemaRequest.ReplaceFieldType(fieldTypeDefinition).process(getClient()); } this.logger.debug(response.toString()); } catch (Exception ex) { } }
@SuppressWarnings("unchecked") private static FieldTypeDefinition createFieldTypeDefinition(NamedList<Object> fieldTypeNamedList) { FieldTypeDefinition fieldTypeDefinition = new FieldTypeDefinition(); fillFieldTypeDefinition(fieldTypeDefinition, fieldTypeNamedList); return fieldTypeDefinition; }