/** * 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"); } } }
analyzer = core.getSchema().getFieldType(field).getQueryAnalyzer();
/** * Handles the resolved analysis request and returns the analysis breakdown response as a named list. * * @param request The request to handle. * @param schema The index schema. * * @return The analysis breakdown as a named list. */ protected NamedList<NamedList> handleAnalysisRequest(FieldAnalysisRequest request, IndexSchema schema) { NamedList<NamedList> analysisResults = new SimpleOrderedMap<NamedList>(); NamedList<NamedList> fieldTypeAnalysisResults = new SimpleOrderedMap<NamedList>(); if (request.getFieldTypes() != null) { for (String fieldTypeName : request.getFieldTypes()) { FieldType fieldType = schema.getFieldTypes().get(fieldTypeName); fieldTypeAnalysisResults.add(fieldTypeName, analyzeValues(request, fieldType, null)); } } NamedList<NamedList> fieldNameAnalysisResults = new SimpleOrderedMap<NamedList>(); if (request.getFieldNames() != null) { for (String fieldName : request.getFieldNames()) { FieldType fieldType = schema.getFieldType(fieldName); fieldNameAnalysisResults.add(fieldName, analyzeValues(request, fieldType, fieldName)); } } analysisResults.add("field_types", fieldTypeAnalysisResults); analysisResults.add("field_names", fieldNameAnalysisResults); return analysisResults; }
/** * 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"); } } }
private AggregateCollapseCollector(Map<AggregateField, AggregateFunction> functions, SolrIndexSearcher searcher) { super(searcher); this.functions = functions; for (AggregateField aggregateField : functions.keySet()) { try { String fieldName = aggregateField.getFieldName(); fieldCaches.put(fieldName, FieldCache.DEFAULT.getStringIndex(searcher.getReader(), fieldName)); fieldTypes.put(fieldName, searcher.getSchema().getFieldType(fieldName)); } catch (IOException e) { throw new RuntimeException(e); } } }
/** * Retrieve the datatype query analyzers associated to this field */ private Map<String, Analyzer> getDatatypeConfig(final String field) { final Map<String, Analyzer> datatypeConfig = new HashMap<String, Analyzer>(); final SirenField fieldType = (SirenField) req.getSchema().getFieldType(field); final Map<String, Datatype> datatypes = fieldType.getDatatypes(); for (final Entry<String, Datatype> e : datatypes.entrySet()) { if (e.getValue().getQueryAnalyzer() == null) { throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Configuration Error: No analyzer defined for type 'query' in " + "datatype " + e.getKey()); } datatypeConfig.put(e.getKey(), e.getValue().getQueryAnalyzer()); } return datatypeConfig; }
/** * Retrieve the datatype query analyzers associated to this field */ private Map<String, Analyzer> getDatatypeConfig(final String field) { final Map<String, Analyzer> datatypeConfig = new HashMap<String, Analyzer>(); final ExtendedJsonField fieldType = (ExtendedJsonField) req.getSchema().getFieldType(field); final Map<String, Datatype> datatypes = fieldType.getDatatypes(); for (final Entry<String, Datatype> e : datatypes.entrySet()) { if (e.getValue().getQueryAnalyzer() == null) { throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Configuration Error: No analyzer defined for type 'query' in " + "datatype " + e.getKey()); } datatypeConfig.put(e.getKey(), e.getValue().getQueryAnalyzer()); } return datatypeConfig; }
/** * analyzes string like the given field * @param field the name of the field * @param value the string to analyze * @return the analyzed string */ public static String analyzeString(SolrCore core, String field, String value) { try { StringBuilder b = new StringBuilder(); try (TokenStream ts = core.getLatestSchema().getFieldType(field).getQueryAnalyzer().tokenStream(field, new StringReader(value))) { ts.reset(); while (ts.incrementToken()) { b.append(" "); CharTermAttribute attr = ts.getAttribute(CharTermAttribute.class); b.append(attr); } } return b.toString().trim(); } catch (IOException e) { //FIXME: This error should be properly logged! e.printStackTrace(); return value; } }
final Analyzer fieldAnalyzer = schema.getFieldType(fieldName).getIndexAnalyzer(); if (fieldAnalyzer instanceof TokenizerChain) { final TokenFilterFactory[] filterFactories =
private boolean fieldHasIndexedStopFilter(String field, SolrQueryRequest req) { FieldType fieldType = req.getSchema().getFieldType(field); Analyzer analyzer = fieldType.getIndexAnalyzer();//index analyzer if (analyzer instanceof TokenizerChain) { TokenizerChain tokenizerChain = (TokenizerChain) analyzer; TokenFilterFactory[] tokenFilterFactories = tokenizerChain.getTokenFilterFactories(); for (TokenFilterFactory tokenFilterFactory : tokenFilterFactories) { if (tokenFilterFactory instanceof StopFilterFactory) return true; } } return false; }
private boolean fieldHasIndexedStopFilter(String field, SolrQueryRequest req) { FieldType fieldType = req.getSchema().getFieldType(field); Analyzer analyzer = fieldType.getIndexAnalyzer();//index analyzer if (analyzer instanceof TokenizerChain) { TokenizerChain tokenizerChain = (TokenizerChain) analyzer; TokenFilterFactory[] tokenFilterFactories = tokenizerChain.getTokenFilterFactories(); for (TokenFilterFactory tokenFilterFactory : tokenFilterFactories) { if (tokenFilterFactory instanceof StopFilterFactory) return true; } } return false; }
public UnInvertedField(String field, SolrIndexSearcher searcher) throws IOException { this.field = field; this.ti = new TermIndex(field, TrieField.getMainValuePrefix(searcher.getSchema().getFieldType(field))); uninvert(searcher); }
private NamedList getListedTermCounts(String field, String termList) throws IOException { FieldType ft = searcher.getSchema().getFieldType(field); List<String> terms = StrUtils.splitSmart(termList, ",", true); NamedList res = new NamedList(); Term t = new Term(field); for (String term : terms) { String internal = ft.toInternal(term); int count = searcher.numDocs(new TermQuery(t.createTerm(internal)), base); res.add(term, count); } return res; }
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; } }
result.add(doc.getFieldValue(uniq.getName()).toString(), theTokens); for (String name : doc.getFieldNames()) { FieldType ft = schema.getFieldType(name); Analyzer analyzer = ft.getAnalyzer(); Collection<Object> vals = doc.getFieldValues(name);
if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(val)) { try { FieldType type = schema.getFieldType(fieldName); if (type instanceof TrieDateField) { val = DF.format(new Date(new Long(val).longValue()));
public NamedList getFieldCacheStats(String fieldName, String[] facet ) { FieldType ft = searcher.getSchema().getFieldType(fieldName); final FieldFacetStats[] finfo = new FieldFacetStats[facet.length]; for( String f : facet ) { ft = searcher.getSchema().getFieldType(f); try { si = FieldCache.DEFAULT.getStringIndex(searcher.getReader(), f);
theTokens.add(name, fieldTokens); FieldType fieldType = schema.getFieldType(name);
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());