Example usage for org.apache.solr.common.luke FieldFlag INDEXED

List of usage examples for org.apache.solr.common.luke FieldFlag INDEXED

Introduction

In this page you can find the example usage for org.apache.solr.common.luke FieldFlag INDEXED.

Prototype

FieldFlag INDEXED

To view the source code for org.apache.solr.common.luke FieldFlag INDEXED.

Click Source Link

Usage

From source file:com.github.fengtan.sophie.beans.SolrUtils.java

License:Open Source License

/**
 * Whether Solr can sort a field.//from   ww w.ja v a2s.co m
 * 
 * @param field
 *            Field.
 * @return True if Solr can sort the field, false otherwise.
 */
public static boolean isFieldSortable(FieldInfo field) {
    // A field is sortable if
    // 1) it is indexed
    // 2) it is not multivalued
    // 3) it does not have docValues
    EnumSet<FieldFlag> flags = SolrUtils.getFlags(field);
    return (flags.contains(FieldFlag.INDEXED) && !flags.contains(FieldFlag.DOC_VALUES)
            && !flags.contains(FieldFlag.MULTI_VALUED));
}

From source file:com.github.fengtan.sophie.tables.DocumentsTable.java

License:Open Source License

/**
 * Get a list of remote facets keyed by field name.
 * //from  w  w  w  .  j a  v  a  2  s  .  co  m
 * @param fields
 *            Fields.
 * @return List of facets keyed by field name.
 * @throws SophieException
 *             If facets could not be fetched.
 */
private Map<String, FacetField> getRemoteFacets(List<FieldInfo> fields) throws SophieException {
    // Prepare query.
    SolrQuery query = getBaseQuery(0, 0);
    query.setFacet(true);
    query.setFacetSort("index");
    query.setFacetLimit(FACET_LIMIT);
    query.setFacetMissing(true);

    // For each field, determine whether Solr can generate a facet (fq works
    // only on indexed fields). If yes, then list that field in the query.
    for (FieldInfo field : fields) {
        if (SolrUtils.getFlags(field).contains(FieldFlag.INDEXED)) {
            query.addFacetField(field.getName());
        }
    }

    // Send query.
    Map<String, FacetField> facets = new HashMap<String, FacetField>();
    try {
        for (FacetField facet : Sophie.client.query(query).getFacetFields()) {
            facets.put(facet.getName(), facet);
        }
    } catch (SolrServerException | IOException | SolrException e) {
        throw new SophieException("Unable to fetch remote facets", e);
    }

    // Return facets keyed by field name.
    return facets;
}

From source file:fr.cnes.sitools.metacatalogue.resources.opensearch.OpensearchDescribeResource.java

License:Open Source License

/**
 * Create a description for the metacatalogue containing all the request parameters, their types and enumeration
 * /*from   www  .  ja  va 2s. co m*/
 * @return a description for the metacatalogue
 */
private Describe createDescribe() {
    Describe describe = new Describe();
    SolrServer server = SolRUtils.getSolRServer(solrCoreUrl);
    if (server == null) {
        throw new ResourceException(Status.SERVER_ERROR_INTERNAL,
                "Solr core : " + solrCoreUrl + " not reachable");
    }

    LukeRequest request = new LukeRequest();
    // request.setNumTerms(maxTopTerms);

    try {
        List<Filter> filters = new ArrayList<Filter>();
        LukeResponse response = request.process(server);
        int numDocs = response.getNumDocs();

        Map<String, LukeResponse.FieldInfo> fields = response.getFieldInfo();

        for (Entry<String, LukeResponse.FieldInfo> field : fields.entrySet()) {
            LukeResponse.FieldInfo fieldInfo = field.getValue();
            String fieldName = fieldInfo.getName();

            boolean indexed = false;

            EnumSet<FieldFlag> flags = FieldInfo.parseFlags(fieldInfo.getSchema());
            indexed = (flags != null && flags.contains(FieldFlag.INDEXED));

            if (indexed && addToDescription(fieldName)) {

                // make a terms query to get the top terms
                SolrQuery query = new SolrQuery();
                query.setRequestHandler("/terms");
                query.setTerms(true);
                query.addTermsField(fieldName);
                query.setTermsLimit(maxTopTerms);
                query.setTermsMinCount(1);

                QueryRequest termsRequest = new QueryRequest(query);
                TermsResponse termsResponse = termsRequest.process(server).getTermsResponse();

                List<Term> terms = termsResponse.getTerms(fieldName);

                Filter filter = new Filter();
                filter.setId(fieldName);
                filter.setTitle(fieldName);
                if (canBeCategorised(terms)) {
                    filter.setType(FilterType.enumeration);
                    filter.setPopulation(numDocs);
                    filter.setSon(createSons(terms));
                } else {
                    filter.setType(getFilterType(fieldInfo.getType()));
                }
                filters.add(filter);
            }
        }
        describe.setFilters(filters);
        return describe;
    } catch (SolrServerException e) {
        throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage(), e);
    } catch (IOException e) {
        throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage(), e);
    }
}

From source file:fr.cnes.sitools.metacatalogue.resources.opensearch.OpensearchDescriptionServiceResource.java

License:Open Source License

private String buildTemplateURL() {

    SolrServer server = SolRUtils.getSolRServer(solrCoreUrl);
    if (server == null) {
        throw new ResourceException(Status.SERVER_ERROR_INTERNAL,
                "Solr core : " + solrCoreUrl + " not reachable");
    }/*w w w  .  jav  a  2 s . com*/

    LukeRequest request = new LukeRequest();
    request.setNumTerms(maxTopTerms);

    try {
        String description = "/search?q={searchTerms}&amp;format=json";

        description += addQueryParameter(OpenSearchQuery.START_PAGE, false);
        description += addQueryParameter(OpenSearchQuery.START_INDEX, false);
        description += addQueryParameter(OpenSearchQuery.COUNT, false);
        description += addQueryParameter(OpenSearchQuery.GEO_BOX, false);

        description += addQueryParameter(OpenSearchQuery.LANGUAGE, false);
        description += addQueryParameter(OpenSearchQuery.TIME_START, false);
        description += addQueryParameter(OpenSearchQuery.TIME_END, false);
        description += addQueryParameter(OpenSearchQuery.MODIFIED, false);

        LukeResponse response = request.process(server);
        Map<String, LukeResponse.FieldInfo> fields = response.getFieldInfo();
        for (Entry<String, LukeResponse.FieldInfo> field : fields.entrySet()) {
            LukeResponse.FieldInfo fieldInfo = field.getValue();
            String fieldName = fieldInfo.getName();

            boolean indexed = false;
            EnumSet<FieldFlag> flags = FieldInfo.parseFlags(fieldInfo.getSchema());
            if (flags != null && flags.contains(FieldFlag.INDEXED)) {
                indexed = true;
            }
            if (indexed && addToDescription(fieldName)) {
                description += "&amp;" + fieldName + "={ptsc:" + fieldName + "?}";
            }
        }

        return description;
    } catch (SolrServerException e) {
        throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage(), e);
    } catch (IOException e) {
        throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage(), e);
    }

}

From source file:org.teiid.translator.solr.SolrMetadataProcessor.java

License:Open Source License

public void getConnectorMetadata(SolrConnection conn, MetadataFactory metadataFactory)
        throws TranslatorException {
    int count = 0;
    LukeRequest request = new LukeRequest();
    request.setShowSchema(true);/*from   ww w . j a  v  a 2 s  .  co  m*/
    LukeResponse response = conn.metadata(request);

    Map<String, FieldInfo> fields = response.getFieldInfo();

    Table table = metadataFactory.addTable(conn.getCoreName());
    table.setSupportsUpdate(true);

    for (String name : fields.keySet()) {
        FieldInfo field = fields.get(name);
        EnumSet<FieldFlag> flags = field.getFlags();
        if ((!name.startsWith("_") && !name.endsWith("_")) || name.startsWith("*") || name.endsWith("*")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
            if (flags.contains(FieldFlag.INDEXED) && flags.contains(FieldFlag.STORED)) {
                Column column = null;
                // array type
                if (flags.contains(FieldFlag.MULTI_VALUED)) {
                    column = metadataFactory.addColumn(field.getName(), resolveType(field.getType()) + "[]", //$NON-NLS-1$
                            table);
                } else {
                    column = metadataFactory.addColumn(field.getName(), resolveType(field.getType()), table);
                }
                column.setUpdatable(true);
                column.setSearchType(SearchType.Searchable);

                // create primary key; and unique keys
                if (field.getDistinct() > 0 || field.getName().equals("id")) { //$NON-NLS-1$
                    if (table.getPrimaryKey() == null) {
                        metadataFactory.addPrimaryKey("PK0", Arrays.asList(field.getName()), table); //$NON-NLS-1$
                    } else {
                        metadataFactory.addIndex("UI" + count, true, Arrays.asList(field.getName()), table); //$NON-NLS-1$
                        count++;
                    }
                }
            }
        }
    }
}

From source file:org.teiid.translator.solr.TestSolrMetadataProcessor.java

License:Open Source License

@Test
public void testMetadata() throws TranslatorException {
    SolrMetadataProcessor mp = new SolrMetadataProcessor();

    MetadataFactory mf = new MetadataFactory("vdb", 1, "solr", SystemMetadata.getInstance().getRuntimeTypeMap(),
            new Properties(), null);
    SolrConnection conn = Mockito.mock(SolrConnection.class);
    Mockito.stub(conn.getCoreName()).toReturn("SomeTable");

    LinkedHashMap<String, FieldInfo> fields = new LinkedHashMap<String, LukeResponse.FieldInfo>();
    fields.put("col1", buildField("col1", "string", EnumSet.of(FieldFlag.STORED, FieldFlag.INDEXED)));
    fields.put("col2", buildField("col2", "int", EnumSet.of(FieldFlag.STORED, FieldFlag.INDEXED)));
    fields.put("col3",
            buildField("col3", "int", EnumSet.of(FieldFlag.STORED, FieldFlag.INDEXED, FieldFlag.MULTI_VALUED)));
    fields.put("id", buildField("id", "long", EnumSet.of(FieldFlag.STORED, FieldFlag.INDEXED)));

    LukeResponse response = Mockito.mock(LukeResponse.class);
    ;//from   ww  w. j  a va2 s  .c  o  m
    Mockito.stub(response.getFieldInfo()).toReturn(fields);

    Mockito.stub(conn.metadata(Mockito.any(LukeRequest.class))).toReturn(response);

    mp.process(mf, conn);

    String metadataDDL = DDLStringVisitor.getDDLString(mf.getSchema(), null, null);
    String expected = "CREATE FOREIGN TABLE SomeTable (\n"
            + "   col1 string OPTIONS (SEARCHABLE 'Searchable'),\n"
            + "   col2 integer OPTIONS (SEARCHABLE 'Searchable'),\n"
            + "   col3 integer[] OPTIONS (SEARCHABLE 'Searchable'),\n"
            + "   id long OPTIONS (SEARCHABLE 'Searchable'),\n" + "   CONSTRAINT PK0 PRIMARY KEY(id)\n"
            + ") OPTIONS (UPDATABLE TRUE);";
    assertEquals(expected, metadataDDL);
}