@Override public String toString() { return name + "{type="+type.getTypeName() + ((defaultValue==null)?"":(",default="+defaultValue)) + ",properties=" + propertiesToString(properties) + ( required ? ", required=true" : "" ) + "}"; }
/** * Check if all fields are of type {@link com.sindicetech.siren.solr.schema.ExtendedJsonField}. */ private static void checkFieldTypes(final IndexSchema indexSchema, final Map<String, Float> queryFields) { for (final String fieldName : queryFields.keySet()) { final FieldType fieldType = indexSchema.getFieldType(fieldName); if (!(fieldType instanceof ExtendedJsonField)) { throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "FieldType: " + fieldName + " (" + fieldType.getTypeName() + ") do not support SIREn's tree query"); } } }
/** * Check if all fields are of type {@link SirenField}. */ private static void checkFieldTypes(final IndexSchema indexSchema, final Map<String, Float> queryFields) { for (final String fieldName : queryFields.keySet()) { final FieldType fieldType = indexSchema.getFieldType(fieldName); if (!(fieldType instanceof SirenField)) { throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "FieldType: " + fieldName + " (" + fieldType.getTypeName() + ") do not support Siren's tree query"); } } }
private void informField (FieldDefinition xmlField, SolrCore core) { Map<String,SchemaField> schemaFields = schema.getFields(); Map<String,FieldType> fieldTypes = schema.getFieldTypes(); String fieldName = xmlField.getName(); if (schemaFields.containsKey(fieldName) && xmlField.getType() != Type.TOKENS) { // The Solr schema has a definition for this field, but it's not a TOKENS field: // We're only interested in TOKENS fields here; these need to install their own special field type since they wrap the // analyzer defined by the schema return; } // look up the type of this field using the mapping in this class FieldType fieldType = getFieldType(xmlField); if (! fieldTypes.containsKey(fieldType.getTypeName())) { // The Solr schema does not define this field type, so add it logger.info("{} defining fieldType: {}", core.getName(), fieldType.getTypeName()); fieldTypes.put(fieldType.getTypeName(), fieldType); } else { fieldType = fieldTypes.get(fieldType.getTypeName()); } // Add the field to the schema logger.info(core.getName() + " defining field: {} of type {}", fieldName, fieldType.getTypeName()); schemaFields.put(fieldName, new SchemaField (fieldName, fieldType, xmlField.getSolrFieldProperties(), "")); }
@Override protected Query getFieldQuery(String field, String queryText, boolean quoted) throws SyntaxError { SchemaField sf = this.schema.getFieldOrNull(field); //TODO cache this check if (sf != null) { final String fieldTypeName = sf.getType().getTypeName().toLowerCase(); if(fieldTypeName.contains("payload") || fieldTypeName.contains("vector")) { return new PayloadScoreQuery(new SpanTermQuery(new Term(field, queryText)), new AveragePayloadFunction(), false); } } return super.getFieldQuery(field, queryText, quoted); } }
protected Query getWildcardQuery(String field, String termStr) throws ParseException { // *:* -> MatchAllDocsQuery if ("*".equals(field) && "*".equals(termStr)) { return newMatchAllDocsQuery(); } // can we use reversed wildcards in this field? String type = schema.getFieldType(field).getTypeName(); ReversedWildcardFilterFactory factory = leadingWildcards.get(type); if (factory != null && factory.shouldReverse(termStr)) { termStr = ReverseStringFilter.reverse(termStr + factory.getMarkerChar()); } Query q = super.getWildcardQuery(field, termStr); if (q instanceof WildcardQuery) { // use a constant score query to avoid overflowing clauses WildcardQuery wildcardQuery = new WildcardQuery(((WildcardQuery)q).getTerm()); return wildcardQuery; } return q; } }
.toString(schemaField.multiValued())); fieldBuilder.allAttributes.put(DataImporter.TYPE, schemaField .getType().getTypeName()); fieldBuilder.allAttributes.put("indexed", Boolean .toString(schemaField.indexed()));
FieldType ft = f.getType(); SimpleOrderedMap<Object> field = new SimpleOrderedMap<Object>(); field.add( "type", ft.getTypeName() ); field.add( "flags", getFieldFlags(f) ); if( f.isRequired() ) { List<String> v = typeusemap.get( ft.getTypeName() ); if( v == null ) { v = new ArrayList<String>(); typeusemap.put( ft.getTypeName(), v );
for( FieldType ft : schema.getFieldTypes().values() ) { SimpleOrderedMap<Object> field = new SimpleOrderedMap<Object>(); field.add("fields", typeusemap.get( ft.getTypeName() ) ); field.add("tokenized", ft.isTokenized() ); field.add("className", ft.getClass().getName()); field.add("indexAnalyzer", getAnalyzerInfo(ft.getAnalyzer())); field.add("queryAnalyzer", getAnalyzerInfo(ft.getQueryAnalyzer())); types.add( ft.getTypeName(), field );
if( field.getType().getTypeName().equals( "json" ) )
FieldType ftype = (sfield==null)?null:sfield.getType(); f.add( "type", (ftype==null)?null:ftype.getTypeName() ); f.add( "schema", getFieldFlags( sfield ) ); if (sfield != null && schema.isDynamicField(sfield.getName()) && schema.getDynamicPattern(sfield.getName()) != null) {
FieldType ftype = (sfield==null)?null:sfield.getType(); f.add( "type", (ftype==null)?null:ftype.getTypeName() ); f.add( "schema", getFieldFlags( sfield ) ); f.add( "flags", getFieldFlags( fieldable ) );
schema = h.getCore().getLatestSchema(); assertNotNull(schema.getFieldOrNull("double.json.rating")); assertEquals("tdouble", schema.getFieldType("double.json.rating").getTypeName()); assertTrue((5.4 - (double)d.getFieldValue("double.json.rating")) < 0.01); schema = h.getCore().getLatestSchema(); assertNotNull(schema.getFieldOrNull("double.json.rating")); assertEquals("tdouble", schema.getFieldType("double.json.rating").getTypeName()); assertTrue((-8.4 + (double)d.getFieldValue("double.json.rating")) < 0.01);
schema = h.getCore().getLatestSchema(); assertNotNull(schema.getFieldOrNull("string.json.knows.name")); assertEquals("string", schema.getFieldType("string.json.knows.name").getTypeName()); schema = h.getCore().getLatestSchema(); assertNotNull(schema.getFieldOrNull("string.json.knows.name")); assertEquals("string", schema.getFieldType("string.json.knows.name").getTypeName()); schema = h.getCore().getLatestSchema(); assertNotNull(schema.getFieldOrNull("string.json.knows.name")); assertEquals("string", schema.getFieldType("string.json.knows.name").getTypeName()); schema = h.getCore().getLatestSchema(); assertNotNull(schema.getFieldOrNull("long.json.age")); assertEquals("tlong", schema.getFieldType("long.json.age").getTypeName()); schema = h.getCore().getLatestSchema(); assertNotNull(schema.getFieldOrNull("double.json.length")); assertEquals("tdouble", schema.getFieldType("double.json.length").getTypeName());