org.apache.solr.search.SortSpec Java Examples
The following examples show how to use
org.apache.solr.search.SortSpec.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: QueryElevationComponent.java From lucene-solr with Apache License 2.0 | 6 votes |
private void setSortSpec(ResponseBuilder rb, boolean forceElevation, ElevationComparatorSource comparator) { // if the sort is 'score desc' use a custom sorting method to // insert documents in their proper place SortSpec sortSpec = rb.getSortSpec(); if (sortSpec.getSort() == null) { sortSpec.setSortAndFields( new Sort( new SortField("_elevate_", comparator, true), new SortField(null, SortField.Type.SCORE, false)), Arrays.asList(new SchemaField[2])); } else { // Check if the sort is based on score SortSpec modSortSpec = this.modifySortSpec(sortSpec, forceElevation, comparator); if (null != modSortSpec) { rb.setSortSpec(modSortSpec); } } }
Example #2
Source File: QueryElevationComponent.java From lucene-solr with Apache License 2.0 | 6 votes |
private void setGroupingSpec(ResponseBuilder rb, boolean forceElevation, ElevationComparatorSource comparator) { // alter the sorting in the grouping specification if there is one GroupingSpecification groupingSpec = rb.getGroupingSpec(); if(groupingSpec != null) { SortSpec groupSortSpec = groupingSpec.getGroupSortSpec(); SortSpec modGroupSortSpec = this.modifySortSpec(groupSortSpec, forceElevation, comparator); if (modGroupSortSpec != null) { groupingSpec.setGroupSortSpec(modGroupSortSpec); } SortSpec withinGroupSortSpec = groupingSpec.getWithinGroupSortSpec(); SortSpec modWithinGroupSortSpec = this.modifySortSpec(withinGroupSortSpec, forceElevation, comparator); if (modWithinGroupSortSpec != null) { groupingSpec.setWithinGroupSortSpec(modWithinGroupSortSpec); } } }
Example #3
Source File: TestNestedDocsSort.java From lucene-solr with Apache License 2.0 | 6 votes |
private SortField parse(String a) { final SolrQueryRequest req = req("q", "{!parent which=type_s1:parent}whatever_s1:foo", "q2", "{!parent which=type_s1:parent}nomater_s1:what", "notbjq", "foo_s1:bar"); try { final SortSpec spec = SortSpecParsing.parseSortSpec(a, req); assertNull(spec.getSchemaFields().get(0)); final Sort sort = spec.getSort(); final SortField field = sort.getSort()[0]; assertNotNull(field); return field; } finally { req.close(); } }
Example #4
Source File: QueryElevationComponent.java From lucene-solr with Apache License 2.0 | 5 votes |
private SortSpec modifySortSpec(SortSpec current, boolean forceElevation, ElevationComparatorSource comparator) { boolean modify = false; SortField[] currentSorts = current.getSort().getSort(); List<SchemaField> currentFields = current.getSchemaFields(); ArrayList<SortField> sorts = new ArrayList<>(currentSorts.length + 1); List<SchemaField> fields = new ArrayList<>(currentFields.size() + 1); // Perhaps force it to always sort by score if (forceElevation && currentSorts[0].getType() != SortField.Type.SCORE) { sorts.add(new SortField("_elevate_", comparator, true)); fields.add(null); modify = true; } for (int i = 0; i < currentSorts.length; i++) { SortField sf = currentSorts[i]; if (sf.getType() == SortField.Type.SCORE) { sorts.add(new SortField("_elevate_", comparator, !sf.getReverse())); fields.add(null); modify = true; } sorts.add(sf); fields.add(currentFields.get(i)); } return modify ? new SortSpec(new Sort(sorts.toArray(new SortField[0])), fields, current.getCount(), current.getOffset()) : null; }
Example #5
Source File: DeepPagingIterator.java From SolRDF with Apache License 2.0 | 5 votes |
/** * Builds a new iterator with the given data. * * @param searcher the Solr index searcher. * @param queryCommand the query command that will be submitted.static * @param sort the sort specs. * @param consumer the Graph event consumer that will be notified on relevant events. */ DeepPagingIterator( final SolrIndexSearcher searcher, final SolrIndexSearcher.QueryCommand queryCommand, final SortSpec sort, final GraphEventConsumer consumer) { this.searcher = searcher; this.queryCommand = queryCommand; this.sentCursorMark = new CursorMark(searcher.getSchema(), sort); this.queryCommand.setCursorMark(sentCursorMark); this.consumer = consumer; }
Example #6
Source File: LocalGraph.java From SolRDF with Apache License 2.0 | 5 votes |
SortSpec sortSpec() throws SyntaxError { if (sortSpec == null) { sortSpec = qParser != null ? qParser.getSort(true) : QueryParsing.parseSortSpec("id asc", request); sortSpec.setOffset(0); } return sortSpec; }
Example #7
Source File: DJoinMergeStrategy.java From BioSolr with Apache License 2.0 | 5 votes |
@SuppressWarnings({ "rawtypes", "unchecked" }) private NamedList unmarshalSortValues(SortSpec sortSpec, NamedList sortFieldValues, IndexSchema schema) { NamedList unmarshalledSortValsPerField = new NamedList(); if (0 == sortFieldValues.size()) return unmarshalledSortValsPerField; List<SchemaField> schemaFields = sortSpec.getSchemaFields(); SortField[] sortFields = sortSpec.getSort().getSort(); int marshalledFieldNum = 0; for (int sortFieldNum = 0; sortFieldNum < sortFields.length; sortFieldNum++) { final SortField sortField = sortFields[sortFieldNum]; final SortField.Type type = sortField.getType(); // :TODO: would be simpler to always serialize every position of SortField[] if (type == SortField.Type.SCORE || type == SortField.Type.DOC) continue; final String sortFieldName = sortField.getField(); final String valueFieldName = sortFieldValues.getName(marshalledFieldNum); assert sortFieldName.equals(valueFieldName) : "sortFieldValues name key does not match expected SortField.getField"; List sortVals = (List) sortFieldValues.getVal(marshalledFieldNum); final SchemaField schemaField = schemaFields.get(sortFieldNum); if (null == schemaField) { unmarshalledSortValsPerField.add(sortField.getField(), sortVals); } else { FieldType fieldType = schemaField.getType(); List unmarshalledSortVals = new ArrayList(); for (Object sortVal : sortVals) { unmarshalledSortVals.add(fieldType.unmarshalSortValue(sortVal)); } unmarshalledSortValsPerField.add(sortField.getField(), unmarshalledSortVals); } marshalledFieldNum++; } return unmarshalledSortValsPerField; }
Example #8
Source File: GroupingSpecification.java From lucene-solr with Apache License 2.0 | 4 votes |
public SortSpec getGroupSortSpec() { return groupSortSpec; }
Example #9
Source File: GroupingSpecification.java From lucene-solr with Apache License 2.0 | 4 votes |
public void setGroupSortSpec(SortSpec groupSortSpec) { this.groupSortSpec = groupSortSpec; }
Example #10
Source File: GroupingSpecification.java From lucene-solr with Apache License 2.0 | 4 votes |
public SortSpec getWithinGroupSortSpec() { return withinGroupSortSpec; }
Example #11
Source File: GroupingSpecification.java From lucene-solr with Apache License 2.0 | 4 votes |
public void setWithinGroupSortSpec(SortSpec withinGroupSortSpec) { this.withinGroupSortSpec = withinGroupSortSpec; }
Example #12
Source File: ResponseBuilder.java From lucene-solr with Apache License 2.0 | 4 votes |
public SortSpec getSortSpec() { return sortSpec; }
Example #13
Source File: ResponseBuilder.java From lucene-solr with Apache License 2.0 | 4 votes |
public void setSortSpec(SortSpec sortSpec) { this.sortSpec = sortSpec; }
Example #14
Source File: QueryComponent.java From lucene-solr with Apache License 2.0 | 4 votes |
@SuppressWarnings({"unchecked", "rawtypes"}) protected NamedList unmarshalSortValues(SortSpec sortSpec, NamedList sortFieldValues, IndexSchema schema) { NamedList unmarshalledSortValsPerField = new NamedList(); if (0 == sortFieldValues.size()) return unmarshalledSortValsPerField; List<SchemaField> schemaFields = sortSpec.getSchemaFields(); SortField[] sortFields = sortSpec.getSort().getSort(); int marshalledFieldNum = 0; for (int sortFieldNum = 0; sortFieldNum < sortFields.length; sortFieldNum++) { final SortField sortField = sortFields[sortFieldNum]; final SortField.Type type = sortField.getType(); // :TODO: would be simpler to always serialize every position of SortField[] if (type==SortField.Type.SCORE || type==SortField.Type.DOC) continue; final String sortFieldName = sortField.getField(); final String valueFieldName = sortFieldValues.getName(marshalledFieldNum); assert sortFieldName.equals(valueFieldName) : "sortFieldValues name key does not match expected SortField.getField"; List sortVals = (List)sortFieldValues.getVal(marshalledFieldNum); final SchemaField schemaField = schemaFields.get(sortFieldNum); if (null == schemaField) { unmarshalledSortValsPerField.add(sortField.getField(), sortVals); } else { FieldType fieldType = schemaField.getType(); List unmarshalledSortVals = new ArrayList(); for (Object sortVal : sortVals) { unmarshalledSortVals.add(fieldType.unmarshalSortValue(sortVal)); } unmarshalledSortValsPerField.add(sortField.getField(), unmarshalledSortVals); } marshalledFieldNum++; } return unmarshalledSortValsPerField; }
Example #15
Source File: LocalGraph.java From SolRDF with Apache License 2.0 | 4 votes |
SolrIndexSearcher.QueryCommand queryCommand(final Triple pattern, final SortSpec sortSpec) throws SyntaxError { final SolrIndexSearcher.QueryCommand cmd = new SolrIndexSearcher.QueryCommand(); cmd.setQuery(new MatchAllDocsQuery()); cmd.setSort(sortSpec.getSort()); cmd.setLen(queryFetchSize); cmd.setFlags(cmd.getFlags() | SolrIndexSearcher.GET_DOCSET); final List<Query> filters = new ArrayList<Query>(); final Node s = pattern.getMatchSubject(); final Node p = pattern.getMatchPredicate(); final Node o = pattern.getMatchObject(); if (s != null) { filters.add(new TermQuery(new Term(Field.S, asNt(s)))); } if (p != null) { filters.add(new TermQuery(new Term(Field.P, asNtURI(p)))); } if (o != null) { if (o.isLiteral()) { final String language = o.getLiteralLanguage(); filters.add( isNotNullOrEmptyString(language) ? languageTermQuery(language) : NULL_LANGUAGE_TERM_QUERY); final String literalValue = o.getLiteralLexicalForm(); final RDFDatatype dataType = o.getLiteralDatatype(); registry.get( dataType != null ? dataType.getURI() : null).addFilterConstraint(filters, literalValue, request); } else { filters.add(new TermQuery(new Term(Field.TEXT_OBJECT, asNt(o)))); } } filters.add(graphTermQuery); cmd.setFilterList(filters); return cmd; }