|
Central search interface, allowing Web2.0 style queries. Each Search instance keeps up with several queries and lazily-loads the results as {@code hasNext}, {@code next} and {@code results} are called. These queries are created by the by* methods. Each instance also has a number of settings which can all be changed from their defaults via accessors, e.g. {@code setBatchSize} or {@code setCaseSensitive}. The only methods which are required for the proper functioning of a Search instance are:
Deprecated.
true
if another call to
{@code next} is valid.Returns the number of active queries. This means that {@code activeQueries} gives the minimum number of remaining calls to {@code results} when batches are not merged.
number of active queries
Sets the maximum number of results that will be returned by one call to {@code results}. If batches are not merged, then results may often be less than the batch size. If batches are merged, then only the last call to {@code results} can be less than batch size. Note: some query types may not support batching at the query level, and all instances must then be loaded into memory simultaneously. {@code results}
Returns the current batch size. If {@code setBatchSize} has not been called, the default value will be in effect. {@code results}
maximum number of results per call to {
Set whether or not results from two separate queries can be returned in the same call to {@code results}.
Returns the current merged-batches setting. If {@code setMergedBatches} has not been called, the default value will be in effect.
Sets the case sensitivity on all queries where case-sensitivity is supported.
use setCaseSensitive instead
Sets the case sensitivity on all queries where case-sensitivity is supported.
Returns the current case sensitivity setting. If {@code setCaseSensitive} has not been called, the default value will be in effect.
Determines if Lucene queries should not hit the database. Instead all values which are stored in the index will be loaded into the object, which includes the id. However, the entity will not be marked unloaded and therefore it is especially important to not allow a projection-instance to be saved back to the server. This can result in DATA LOSS.
Returns the current use-projection setting. If true, the client must be careful with all results that are returned. See {@code setUseProjections} for more. If {@code setUseProjections} has not been called, the default value will be in effect.
Determines if all results should be returned as unloaded objects. This is particularly useful for creating lists for further querying via IQuery. This value overrides the {@code setUseProjections} setting.
Returns the current return-unloaded setting. If true, all returned entities will be unloaded. If {@code setReturnUnloaded} has not been called, the default value will be in effect.
Permits full-text queries with a leading query if true.
Returns the current leading-wildcard setting. If false, {@code byFullText} and {@code bySomeMustNone} will throw an ApiUsageException, since leading-wildcard searches are quite slow. Use {@code setAllowLeadingWildcard} in order to permit this usage.
Restricts the search to a single type. All return values will match this type.
Restricts searches to a set of types. The entities returned are guaranteed to be one of these types.
Permits all types to be returned. For some types of queries, this carries a performance penalty as every database table must be hit.
Restricts the set of ids which will be checked. This is useful for testing one of the given restrictions on a reduced set of objects.
Uses the omero::model::Details::getOwner() and omero::model::Details::getGroup() information to restrict the entities which will be returned. If both are non-null, the two restrictions are joined by an AND.
Uses the omero::model::Details::getOwner() and omero::model::Details::getGroup() information to restrict the entities which will be returned. If both are non-null, the two restrictions are joined by an AND.
Restricts the time between which an entity may have been created.
Restricts the time between which an entity may have last been modified.
Restricts entities by the time in which any annotation (which matches the other filters) was added them. This matches the omero::model::Details::getCreationEvent() creation event of the model::Annotation.
Restricts entities by who has annotated them with an model::Annotation matching the other filters. As {@code onlyOwnedBy}, the omero::model::Details::getOwner() and omero::model::Details::getGroup() information is combined with an AND condition.
Restricts entities by who has not annotated them with an model::Annotation matching the other filters. As {@code notOwnedBy}, the omero::model::Details::getOwner() and omero::model::Details::getGroup() information is combined with an AND condition.
Restricts entities to having an
model::Annotation of all the given types. This
is useful in combination with the other onlyAnnotated*
methods to say, e.g., only annotated with a file by user X.
By default, this value is null
and imposes no
restriction. Passing an empty array implies an object that
is not annotated at all.
Note: If the semantics were OR, then a client would have to
query each class individually, and compare all the various
values, checking which ids are where. However, since this
method defaults to AND, multiple calls (optionally with
{@code isMergedBatches} and {@code isReturnUnloaded})
and combine the results. Duplicate ids are still possible
so a set of some form should be used to collect the results.
A path from the target entity which will be added to the current stack of order statements applied to the query.
A path from the target entity which will be added to the current stack of order statements applied to the query.
Removes the current stack of order statements.
Queries the database for all model::Annotation annotations of the given types for all returned instances.
Adds a fetch clause for loading non-annotation fields of returned entities. Each fetch is a hibernate clause in dot notation.
Resets all settings (non-query state) to the original default values, as if the instance had just be created.
Returns transient (without ID) model::TagAnnotation instances which represent all the model::TagAnnotation tags in the given group. The entities are transient and without ownership since multiple users can own the same tag. This method will override settings for types.
Creates a query which will return transient (without ID) model::TagAnnotation instances which represent all the model::TagAnnotation tag groups which the given tag belongs to. The entities are transient and without ownership since multiple users can own the same tag group. This method will override settings for types.
Passes the query as is to the Lucene backend.
Builds a Lucene query and passes it to the Lucene backend. {@code DATE_TYPE_ACQUISITION} or {@code DATE_TYPE_IMPORT}
Returns transient (without ID) model::TextAnnotation instances which represent terms which are similar to the given terms. For example, if the argument is cell, one return value might have as its textValue: cellular while another has cellularize. No filtering or fetching is performed.
Delegates to {@code omero.api.IQuery.findAllByQuery} method to take advantage of the {@code and}, {@code or}, and {@code not} methods, or queue-semantics.
Builds a Lucene query and passes it to {@code byFullText}.
Finds entities annotated with an model::Annotation similar to the example. This does not use Hibernate's {@code omero.api.IQuery.findByExample} Query-By-Example} mechanism, since that cannot handle joins. The fields which are used are:
null
it is assumed to
be a wildcard searched, and only the type of the annotation
is searched. Currently, ListAnnotations are not supported.
Removes all active queries (leaving {@code resetDefaults} settings alone), such that {@code activeQueries} will return 0.
Applies the next by* method to the previous by* method, so that a call {@code hasNext}, {@code next}, or {@code results} sees only the intersection of the two calls. For example,
{@code service.onlyType(Image.class); service.byFullText("foo"); service.intersection(); service.byAnnotatedWith(TagAnnotation.class); }will return only the Images with TagAnnotations.
Calling this method overrides a previous setting of {@code or} or {@code not}. If there is no active queries (i.e. {@code activeQueries > 0}), then an ApiUsageException will be thrown.
Applies the next by* method to the previous by* method, so that a call {@code hasNext}, {@code next} or {@code results} sees only the union of the two calls. For example,
{@code service.onlyType(Image.class); service.byFullText("foo"); service.or(); service.onlyType(Dataset.class); service.byFullText("foo"); }will return both Images and Datasets together. Calling this method overrides a previous setting of {@code and} or {@code not}. If there is no active queries (i.e. {@code activeQueries > 0}), then an ApiUsageException will be thrown.
Applies the next by* method to the previous by* method, so that a call {@code hasNext}, {@code next}, or {@code results} sees only the intersection of the two calls. For example,
{@code service.onlyType(Image.class); service.byFullText("foo"); service.complement(); service.byAnnotatedWith(TagAnnotation.class); }will return all the Images not annotated with TagAnnotation.
Calling this method overrides a previous setting of {@code or} or {@code and}. If there is no active queries (i.e. {@code activeQueries > 0}), then an ApiUsageException will be thrown.
Returns true
if another call to
{@code next} is valid. A call to {@code next} may throw
an exception for another reason, however.
Returns the next entity from the current query. If the previous call returned the last entity from a given query, the first entity from the next query will be returned and {@code activeQueries} decremented. Since this method only returns the entity itself, a single call to {@code currentMetadata} may follow this call to gather the extra metadata which is returned in the map via {@code results}.
Returns up to {@code getBatchSize} batch size number of results along with the related query metadata. If {@code isMergedBatches} batches are merged then the results from multiple queries may be returned together. {@code hasNext} returns false.
Provides access to the extra query information (for example Lucene score and boost values) for a single call to {@code next}. This method may only be called once for any given call to {@code next}.
Provides access to the extra query information (for example Lucene score and boost values) for a single call to {@code results}. This method may only be called once for any given call to {@code results}.
Unsupported operation.
|