Example usage for org.apache.solr.schema TextField TextField

List of usage examples for org.apache.solr.schema TextField TextField

Introduction

In this page you can find the example usage for org.apache.solr.schema TextField TextField.

Prototype

TextField

Source Link

Usage

From source file:net.yacy.cora.federate.solr.responsewriter.EnhancedXMLResponseWriter.java

License:Open Source License

private static final void writeDoc(final Writer writer, final IndexSchema schema, final String name,
        final List<IndexableField> fields, final float score, final boolean includeScore) throws IOException {
    startTagOpen(writer, "doc", name);

    if (includeScore) {
        writeTag(writer, "float", "score", Float.toString(score), false);
    }//from w  w w.ja  v a  2  s.c  om

    int sz = fields.size();
    int fidx1 = 0, fidx2 = 0;
    while (fidx1 < sz) {
        IndexableField value = fields.get(fidx1);
        String fieldName = value.name();
        fidx2 = fidx1 + 1;
        while (fidx2 < sz && fieldName.equals(fields.get(fidx2).name())) {
            fidx2++;
        }
        SchemaField sf = schema == null ? null : schema.getFieldOrNull(fieldName);
        if (sf == null) {
            sf = new SchemaField(fieldName, new TextField());
        }
        FieldType type = sf.getType();
        if (fidx1 + 1 == fidx2) {
            if (sf.multiValued()) {
                startTagOpen(writer, "arr", fieldName);
                writer.write(lb);
                String sv = value.stringValue();
                writeField(writer, type.getTypeName(), null, sv); //sf.write(this, null, f1);
                writer.write("</arr>");
            } else {
                writeField(writer, type.getTypeName(), value.name(), value.stringValue()); //sf.write(this, f1.name(), f1);
            }
        } else {
            startTagOpen(writer, "arr", fieldName);
            writer.write(lb);
            for (int i = fidx1; i < fidx2; i++) {
                String sv = fields.get(i).stringValue();
                writeField(writer, type.getTypeName(), null, sv); //sf.write(this, null, (Fieldable)this.tlst.get(i));
            }
            writer.write("</arr>");
            writer.write(lb);
        }
        fidx1 = fidx2;
    }
    writer.write("</doc>");
    writer.write(lb);
}

From source file:net.yacy.cora.federate.solr.responsewriter.FlatJSONResponseWriter.java

License:Open Source License

private static final void writeDoc(final Writer writer, final IndexSchema schema, final String name,
        final List<IndexableField> fields, final float score, final boolean includeScore) throws IOException {
    JSONObject json = new JSONObject(true);

    int sz = fields.size();
    int fidx1 = 0, fidx2 = 0;
    while (fidx1 < sz) {
        IndexableField value = fields.get(fidx1);
        String fieldName = value.name();
        fidx2 = fidx1 + 1;//from www.  j a  v  a  2  s  .  c  o m
        while (fidx2 < sz && fieldName.equals(fields.get(fidx2).name())) {
            fidx2++;
        }
        SchemaField sf = schema == null ? null : schema.getFieldOrNull(fieldName);
        if (sf == null) {
            sf = new SchemaField(fieldName, new TextField());
        }
        FieldType type = sf.getType();
        if (fidx1 + 1 == fidx2) {
            if (sf.multiValued()) {
                JSONArray a = new JSONArray();
                json.put(fieldName, a);
                JSONObject j = new JSONObject();
                String sv = value.stringValue();
                setValue(j, type.getTypeName(), "x", sv); //sf.write(this, null, f1);
                a.add(j.get("x"));
            } else {
                setValue(json, type.getTypeName(), value.name(), value.stringValue());
            }
        } else {
            JSONArray a = new JSONArray();
            json.put(fieldName, a);
            for (int i = fidx1; i < fidx2; i++) {
                String sv = fields.get(i).stringValue();
                JSONObject j = new JSONObject();
                setValue(j, type.getTypeName(), "x", sv); //sf.write(this, null, f1);
                a.add(j.get("x"));
            }
        }
        fidx1 = fidx2;
    }
    writer.write(json.toString());
    writer.write(lb);
}

From source file:net.yacy.cora.federate.solr.responsewriter.HTMLResponseWriter.java

License:Open Source License

public static final LinkedHashMap<String, String> translateDoc(final IndexSchema schema, final Document doc) {
    List<IndexableField> fields = doc.getFields();
    int sz = fields.size();
    int fidx1 = 0, fidx2 = 0;
    LinkedHashMap<String, String> kv = new LinkedHashMap<String, String>();
    while (fidx1 < sz) {
        IndexableField value = fields.get(fidx1);
        String fieldName = value.name();
        fidx2 = fidx1 + 1;/*from w w w  .  j a  v  a 2 s .co  m*/
        while (fidx2 < sz && fieldName.equals(fields.get(fidx2).name())) {
            fidx2++;
        }
        SchemaField sf = schema.getFieldOrNull(fieldName);
        if (sf == null)
            sf = new SchemaField(fieldName, new TextField());
        FieldType type = sf.getType();

        if (fidx1 + 1 == fidx2) {
            if (sf.multiValued()) {
                String sv = value.stringValue();
                kv.put(fieldName, field2string(type, sv));
            } else {
                kv.put(fieldName, field2string(type, value.stringValue()));
            }
        } else {
            int c = 0;
            for (int i = fidx1; i < fidx2; i++) {
                String sv = fields.get(i).stringValue();
                kv.put(fieldName + "_" + c++, field2string(type, sv));
            }
        }

        fidx1 = fidx2;
    }
    return kv;
}

From source file:org.sakaiproject.nakamura.search.solr.SparseResultSetFactory.java

License:Apache License

/**
 * Process properties to query sparse content directly.
 *
 * @param request/* w  ww. ja  va 2 s  . c o m*/
 * @param query
 * @param asAnon
 * @return
 * @throws StorageClientException
 * @throws AccessDeniedException
 */
public SolrSearchResultSet processQuery(SlingHttpServletRequest request, Query query, boolean asAnon)
        throws SolrSearchException {
    try {
        // use solr parsing to get the terms from the query string
        QueryParser parser = new QueryParser(Version.LUCENE_40, "id", new TextField().getQueryAnalyzer());
        org.apache.lucene.search.Query luceneQuery = parser.parse(query.getQueryString());

        Map<String, Object> props = Maps.newHashMap();
        if (luceneQuery instanceof BooleanQuery) {
            BooleanQuery boolLucQuery = (BooleanQuery) luceneQuery;

            int orCount = 0;
            List<BooleanClause> clauses = boolLucQuery.clauses();
            for (BooleanClause clause : clauses) {
                org.apache.lucene.search.Query clauseQuery = clause.getQuery();
                Map<String, Object> subOrs = Maps.newHashMap();
                // we support 1 level of nesting for OR clauses
                if (clauseQuery instanceof BooleanQuery) {
                    BooleanQuery bq = (BooleanQuery) clauseQuery;
                    List<BooleanClause> subClauses = bq.clauses();
                    for (BooleanClause subclause : subClauses) {
                        org.apache.lucene.search.Query subclauseQuery = subclause.getQuery();
                        extractTerms(subclause, subclauseQuery, props, subOrs);
                    }
                    props.put("orset" + orCount, subOrs);
                    orCount++;
                } else {
                    extractTerms(clause, clauseQuery, props, subOrs);
                    if (!subOrs.isEmpty()) {
                        props.put("orset" + orCount, subOrs);
                        orCount++;
                    }
                }
            }
        } else {
            extractTerms(null, luceneQuery, props, null);
        }

        // add the options to the parameters but prepend _ to avoid collision
        for (Entry<String, Object> option : query.getOptions().entrySet()) {
            props.put("_" + option.getKey(), option.getValue());
        }

        String name = query.getName();
        if (name != null) {
            props.put(StorageConstants.CUSTOM_STATEMENT_SET, name);
        }

        Session session = StorageClientUtils
                .adaptToSession(request.getResourceResolver().adaptTo(javax.jcr.Session.class));
        ContentManager cm = session.getContentManager();
        long tquery = System.currentTimeMillis();
        Iterable<Content> items = cm.find(props);
        tquery = System.currentTimeMillis() - tquery;
        try {
            if (tquery > verySlowQueryThreshold) {
                SLOW_QUERY_LOGGER.error("Very slow sparse query {} ms {} ", tquery,
                        URLDecoder.decode(query.toString(), "UTF-8"));
            } else if (tquery > slowQueryThreshold) {
                SLOW_QUERY_LOGGER.warn("Slow sparse query {} ms {} ", tquery,
                        URLDecoder.decode(query.toString(), "UTF-8"));
            }
        } catch (UnsupportedEncodingException e) {
            // quietly swallow this exception
            LOGGER.debug(e.getLocalizedMessage(), e);
        }
        SolrSearchResultSet rs = new SparseSearchResultSet(items, defaultMaxResults);
        return getResultSetWithCount(rs, props, cm);
    } catch (AccessDeniedException e) {
        throw new SolrSearchException(500, e.getMessage());
    } catch (StorageClientException e) {
        throw new SolrSearchException(500, e.getMessage());
    } catch (ParseException e) {
        throw new SolrSearchException(500, e.getMessage());
    }
}