@Override public TimeoutManagerImpl getTimeoutManager() { if ( timeoutManager == null ) { timeoutManager = buildTimeoutManager(); } return timeoutManager; }
@Override public HSQuery sort(Sort sort) { clearCachedResults(); this.sort = sort; return this; }
private void validateCommonSortField(Iterable<EntityIndexBinding> targetedBindings, SortField sortField) { // Inspect bridge-defined fields first, to allow them to override field metadata BridgeDefinedField bridgeDefinedField = findBridgeDefinedField( targetedBindings, sortField.getField() ); if ( bridgeDefinedField != null ) { validateSortField( sortField, bridgeDefinedField ); } else { DocumentFieldMetadata metadata = findFieldMetadata( targetedBindings, sortField.getField() ); if ( metadata != null ) { validateSortField( sortField, metadata ); } } }
@Override protected Set<IndexManager> getIndexManagers(EntityIndexBinding binding) { Set<IndexManager> indexManagers = super.getIndexManagers( binding ); for ( IndexManager indexManager : indexManagers ) { if ( !( indexManager instanceof ElasticsearchIndexManager ) ) { throw LOG.cannotRunEsQueryTargetingEntityIndexedWithNonEsIndexManager( binding.getDocumentBuilder().getTypeIdentifier(), rawSearchPayload.toString() ); } } return indexManagers; }
@Override public HSQuery projection(String... fields) { if ( fields == null || fields.length == 0 ) { this.projectedFields = null; } else { this.projectedFields = fields; boolean hasThis = false; Set<String> supportedProjectionConstants = getSupportedProjectionConstants(); for ( String field : fields ) { if ( ProjectionConstants.THIS.equals( field ) ) { hasThis = true; } if ( field != null && field.startsWith( HSEARCH_PROJECTION_FIELD_PREFIX ) && !supportedProjectionConstants.contains( field ) ) { throw LOG.unexpectedProjectionConstant( field ); } } this.hasThisProjection = hasThis; } clearCachedResults(); return this; }
private void validateDistanceSortField(Iterable<EntityIndexBinding> targetedBindings, SortField sortField) { DocumentFieldMetadata documentFieldMetadata = findFieldMetadata( targetedBindings, sortField.getField() ); if ( documentFieldMetadata == null ) { throw LOG.sortRequiresIndexedField( sortField.getClass(), sortField.getField() ); } if ( !documentFieldMetadata.isSpatial() ) { throw LOG.distanceSortRequiresSpatialField( sortField.getField() ); } }
protected final Map<FacetingRequest, FacetMetadata> buildFacetingRequestsAndMetadata(Collection<FacetingRequest> facetingRequests, Iterable<EntityIndexBinding> targetedEntityBindings) { Map<FacetingRequest, FacetMetadata> result = CollectionHelper.newHashMap( facetingRequests.size() ); for ( FacetingRequest facetingRequest : facetingRequests ) { result.put( facetingRequest, findFacetMetadata( facetingRequest, targetedEntityBindings ) ); } return result; }
protected Set<IndexManager> getIndexManagers(EntityIndexBinding binding) { FullTextFilterImplementor[] fullTextFilters = getFullTextFilterImplementors(); Set<IndexManager> indexManagers = binding.getIndexManagerSelector().forFilters( fullTextFilters ); return indexManagers; }
private void validateSortField(SortField sortField, BridgeDefinedField bridgeDefinedField) { switch ( sortField.getType() ) { case INT: assertType( sortField, bridgeDefinedField.getType(), FieldType.INTEGER ); break; case LONG: assertType( sortField, bridgeDefinedField.getType(), FieldType.LONG ); break; case DOUBLE: assertType( sortField, bridgeDefinedField.getType(), FieldType.DOUBLE ); break; case FLOAT: assertType( sortField, bridgeDefinedField.getType(), FieldType.FLOAT ); break; case STRING: case STRING_VAL: assertType( sortField, bridgeDefinedField.getType(), FieldType.STRING ); break; default: throw LOG.sortTypeDoesNotMatchFieldType( String.valueOf( sortField.getType() ), String.valueOf( bridgeDefinedField.getType() ), sortField.getField() ); } }
@Override public List<Facet> getFacets(String facetingName) { // if there are no facet requests we don't have to do anything if ( facetRequests == null || facetRequests.isEmpty() || !facetRequests.containsKey( facetingName ) ) { return Collections.emptyList(); } List<Facet> facets = null; if ( facetResults != null ) { facets = facetResults.get( facetingName ); } if ( facets != null ) { return facets; } query.extractFacetResults(); //handle edge case of an empty index if ( facetResults == null ) { return Collections.emptyList(); } List<Facet> results = facetResults.get( facetingName ); if ( results != null ) { return results; } else { return Collections.emptyList(); } }
@Override protected Set<IndexManager> getIndexManagers(EntityIndexBinding binding) { Set<IndexManager> indexManagers = super.getIndexManagers( binding ); for ( IndexManager indexManager : indexManagers ) { if ( !( indexManager instanceof ElasticsearchIndexManager ) ) { throw LOG.cannotRunEsQueryTargetingEntityIndexedWithNonEsIndexManager( binding.getDocumentBuilder().getTypeIdentifier(), rawSearchPayload.toString() ); } } return indexManagers; }
@Override public HSQuery projection(String... fields) { if ( fields == null || fields.length == 0 ) { this.projectedFields = null; } else { this.projectedFields = fields; boolean hasThis = false; Set<String> supportedProjectionConstants = getSupportedProjectionConstants(); for ( String field : fields ) { if ( ProjectionConstants.THIS.equals( field ) ) { hasThis = true; } if ( field != null && field.startsWith( HSEARCH_PROJECTION_FIELD_PREFIX ) && !supportedProjectionConstants.contains( field ) ) { throw LOG.unexpectedProjectionConstant( field ); } } this.hasThisProjection = hasThis; } clearCachedResults(); return this; }
private void validateDistanceSortField(Iterable<EntityIndexBinding> targetedBindings, SortField sortField) { DocumentFieldMetadata documentFieldMetadata = findFieldMetadata( targetedBindings, sortField.getField() ); if ( documentFieldMetadata == null ) { throw LOG.sortRequiresIndexedField( sortField.getClass(), sortField.getField() ); } if ( !documentFieldMetadata.isSpatial() ) { throw LOG.distanceSortRequiresSpatialField( sortField.getField() ); } }
protected final Map<FacetingRequest, FacetMetadata> buildFacetingRequestsAndMetadata(Collection<FacetingRequest> facetingRequests, Iterable<EntityIndexBinding> targetedEntityBindings) { Map<FacetingRequest, FacetMetadata> result = CollectionHelper.newHashMap( facetingRequests.size() ); for ( FacetingRequest facetingRequest : facetingRequests ) { result.put( facetingRequest, findFacetMetadata( facetingRequest, targetedEntityBindings ) ); } return result; }
protected Set<IndexManager> getIndexManagers(EntityIndexBinding binding) { FullTextFilterImplementor[] fullTextFilters = getFullTextFilterImplementors(); Set<IndexManager> indexManagers = binding.getIndexManagerSelector().forFilters( fullTextFilters ); return indexManagers; }
private void validateSortField(SortField sortField, BridgeDefinedField bridgeDefinedField) { switch ( sortField.getType() ) { case INT: assertType( sortField, bridgeDefinedField.getType(), FieldType.INTEGER ); break; case LONG: assertType( sortField, bridgeDefinedField.getType(), FieldType.LONG ); break; case DOUBLE: assertType( sortField, bridgeDefinedField.getType(), FieldType.DOUBLE ); break; case FLOAT: assertType( sortField, bridgeDefinedField.getType(), FieldType.FLOAT ); break; case STRING: case STRING_VAL: assertType( sortField, bridgeDefinedField.getType(), FieldType.STRING ); break; default: throw LOG.sortTypeDoesNotMatchFieldType( String.valueOf( sortField.getType() ), String.valueOf( bridgeDefinedField.getType() ), sortField.getField() ); } }
@Override public List<Facet> getFacets(String facetingName) { // if there are no facet requests we don't have to do anything if ( facetRequests == null || facetRequests.isEmpty() || !facetRequests.containsKey( facetingName ) ) { return Collections.emptyList(); } List<Facet> facets = null; if ( facetResults != null ) { facets = facetResults.get( facetingName ); } if ( facets != null ) { return facets; } query.extractFacetResults(); //handle edge case of an empty index if ( facetResults == null ) { return Collections.emptyList(); } List<Facet> results = facetResults.get( facetingName ); if ( results != null ) { return results; } else { return Collections.emptyList(); } }
private void validateCommonSortField(Iterable<EntityIndexBinding> targetedBindings, SortField sortField) { // Inspect bridge-defined fields first, to allow them to override field metadata BridgeDefinedField bridgeDefinedField = findBridgeDefinedField( targetedBindings, sortField.getField() ); if ( bridgeDefinedField != null ) { validateSortField( sortField, bridgeDefinedField ); } else { DocumentFieldMetadata metadata = findFieldMetadata( targetedBindings, sortField.getField() ); if ( metadata != null ) { validateSortField( sortField, metadata ); } } }
void queryHasChanged() { facetFilterset = null; this.facetResults = null; query.clearCachedResults(); }
@Override protected Set<IndexManager> getIndexManagers(EntityIndexBinding binding) { Set<IndexManager> indexManagers = super.getIndexManagers( binding ); for ( IndexManager indexManager : indexManagers ) { if ( !( indexManager instanceof DirectoryBasedIndexManager ) ) { throw log.cannotRunLuceneQueryTargetingEntityIndexedWithNonLuceneIndexManager( binding.getDocumentBuilder().getTypeIdentifier(), luceneQuery.toString() ); } } return indexManagers; }