@Override public FacetContext facet() { return new ConnectedFacetContext( new FacetBuildingContext( context.getExtendedSearchIntegrator(), context.getEntityType() ) ); }
@Override public FacetContext facet() { return new ConnectedFacetContext( new FacetBuildingContext( context.getExtendedSearchIntegrator(), context.getEntityType() ) ); }
HSQuery query = queryContext.getExtendedSearchIntegrator().createHSQuery( findById, queryContext.getEntityType().getPojoType() ); List<EntityInfo> entityInfos = query .maxResults( 1 ) if ( entityInfos.size() == 0 ) { if ( inputType == ID ) { throw log.entityWithIdNotFound( queryContext.getEntityType(), id );
HSQuery query = queryContext.getExtendedSearchIntegrator().createHSQuery( findById, queryContext.getEntityType().getPojoType() ); List<EntityInfo> entityInfos = query .maxResults( 1 ) if ( entityInfos.size() == 0 ) { if ( inputType == ID ) { throw log.entityWithIdNotFound( queryContext.getEntityType(), id );
private SortField.Type getCurrentSortFieldTypeFromMetamodel() { SortField.Type type = null; TypeMetadata typeMetadata = queryContext.getExtendedSearchIntegrator() .getIndexBinding( queryContext.getEntityType() ) .getDocumentBuilder() .getTypeMetadata(); BridgeDefinedField bridgeDefinedFieldMetadata = typeMetadata.getBridgeDefinedFieldMetadataFor( currentName ); if ( bridgeDefinedFieldMetadata != null ) { type = getSortFieldType( bridgeDefinedFieldMetadata ); } if ( type == null ) { DocumentFieldMetadata documentFieldMetadata = typeMetadata.getDocumentFieldMetadataFor( currentName ); if ( documentFieldMetadata != null ) { type = getSortFieldType( documentFieldMetadata ); } } if ( type != null ) { return type; } else { throw new SearchException( "Cannot automatically determine the field type for field '" + currentName + "'. Use byField(String, Sort.Type) to provide the sort type explicitly." ); } }
private SortField.Type getCurrentSortFieldTypeFromMetamodel() { SortField.Type type = null; TypeMetadata typeMetadata = queryContext.getExtendedSearchIntegrator() .getIndexBinding( queryContext.getEntityType() ) .getDocumentBuilder() .getTypeMetadata(); BridgeDefinedField bridgeDefinedFieldMetadata = typeMetadata.getBridgeDefinedFieldMetadataFor( currentName ); if ( bridgeDefinedFieldMetadata != null ) { type = getSortFieldType( bridgeDefinedFieldMetadata ); } if ( type == null ) { DocumentFieldMetadata documentFieldMetadata = typeMetadata.getDocumentFieldMetadataFor( currentName ); if ( documentFieldMetadata != null ) { type = getSortFieldType( documentFieldMetadata ); } } if ( type != null ) { return type; } else { throw new SearchException( "Cannot automatically determine the field type for field '" + currentName + "'. Use byField(String, Sort.Type) to provide the sort type explicitly." ); } }
private Query createSpatialQuery() { final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); //FIXME that will have to change probably but today, if someone uses latitude / longitude // we use boolean style spatial queries // and on coordinates field, use spatial hash query // FIXME in the future we will likely react to some state stored in SpatialFieldBridge (for the indexing strategy) String coordinatesField = spatialContext.getCoordinatesField(); FieldBridge fieldBridge = documentBuilder.getBridge( coordinatesField ); if ( fieldBridge instanceof SpatialFieldBridgeByHash ) { return SpatialQueryBuilderFromCoordinates.buildSpatialQueryByHash( spatialContext.getCoordinates(), spatialContext.getRadiusDistance(), // always in KM so far, no need to convert coordinatesField ); } else if ( fieldBridge instanceof SpatialFieldBridgeByRange ) { return SpatialQueryBuilderFromCoordinates.buildSpatialQueryByRange( spatialContext.getCoordinates(), spatialContext.getRadiusDistance(), //always in KM so far, no need to convert coordinatesField ); } else { throw LOG.targetedFieldNotSpatial( queryContext.getEntityType().getName(), coordinatesField ); } } }
private Query createSpatialQuery() { final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); //FIXME that will have to change probably but today, if someone uses latitude / longitude // we use boolean style spatial queries // and on coordinates field, use spatial hash query // FIXME in the future we will likely react to some state stored in SpatialFieldBridge (for the indexing strategy) String coordinatesField = spatialContext.getCoordinatesField(); FieldBridge fieldBridge = documentBuilder.getBridge( coordinatesField ); if ( fieldBridge instanceof SpatialFieldBridgeByHash ) { return SpatialQueryBuilderFromCoordinates.buildSpatialQueryByHash( spatialContext.getCoordinates(), spatialContext.getRadiusDistance(), // always in KM so far, no need to convert coordinatesField ); } else if ( fieldBridge instanceof SpatialFieldBridgeByRange ) { return SpatialQueryBuilderFromCoordinates.buildSpatialQueryByRange( spatialContext.getCoordinates(), spatialContext.getRadiusDistance(), //always in KM so far, no need to convert coordinatesField ); } else { throw LOG.targetedFieldNotSpatial( queryContext.getEntityType().getName(), coordinatesField ); } } }
public Query createQuery() { Query query; final ExtendedSearchIntegrator searchIntegrator = queryContext.getExtendedSearchIntegrator(); final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); IndexReader indexReader = searchIntegrator.getIndexReaderAccessor().open( queryContext.getEntityType().asTypeSet() ); // retrieving the docId and building the more like this query form the term vectors must be using the same index reader try { String[] fieldNames = getAllCompatibleFieldNames( documentBuilder ); if ( fieldsContext.size() == 0 ) { // Use all compatible fields when comparingAllFields is used fieldsContext.addAll( fieldNames ); } query = new MoreLikeThisBuilder( documentBuilder, searchIntegrator ) .compatibleFieldNames( fieldNames ) .fieldsContext( fieldsContext ) .queryContext( queryContext ) .indexReader( indexReader ) .inputType( inputType ) .input( input ) .otherMoreLikeThisContext( moreLikeThisContext ) .createQuery(); } finally { searchIntegrator.getIndexReaderAccessor().close( indexReader ); } //TODO implement INPUT_TYPE.READER //TODO implement INPUT_TYPE.STRING return queryCustomizer.setWrappedQuery( query ).createQuery(); }
public Query createQuery() { Query query; final ExtendedSearchIntegrator searchIntegrator = queryContext.getExtendedSearchIntegrator(); final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); IndexReader indexReader = searchIntegrator.getIndexReaderAccessor().open( queryContext.getEntityType().asTypeSet() ); // retrieving the docId and building the more like this query form the term vectors must be using the same index reader try { String[] fieldNames = getAllCompatibleFieldNames( documentBuilder ); if ( fieldsContext.size() == 0 ) { // Use all compatible fields when comparingAllFields is used fieldsContext.addAll( fieldNames ); } query = new MoreLikeThisBuilder( documentBuilder, searchIntegrator ) .compatibleFieldNames( fieldNames ) .fieldsContext( fieldsContext ) .queryContext( queryContext ) .indexReader( indexReader ) .inputType( inputType ) .input( input ) .otherMoreLikeThisContext( moreLikeThisContext ) .createQuery(); } finally { searchIntegrator.getIndexReaderAccessor().close( indexReader ); } //TODO implement INPUT_TYPE.READER //TODO implement INPUT_TYPE.STRING return queryCustomizer.setWrappedQuery( query ).createQuery(); }