List of usage examples for org.apache.solr.common.luke FieldFlag INDEXED
FieldFlag INDEXED
To view the source code for org.apache.solr.common.luke FieldFlag INDEXED.
Click Source Link
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}&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 += "&" + 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); }