/* * Hibernate Search, full-text search for your domain model * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.metadata; import java.util.Set; import org.hibernate.search.engine.BoostStrategy; /** * Top level descriptor of the metadata API. Giving access to the indexing information for a single type. * * @author Hardy Ferentschik */ public interface IndexedTypeDescriptor extends FieldContributor { /** * @return the type for which this descriptor provides meta information */ Class<?> getType(); /** * @return {@code true} if the type for this descriptor is indexed, {@code false} otherwise */ boolean isIndexed(); /** * @return {@code true} is this index is sharded, {@code false} otherwise */ boolean isSharded(); /** * Returns a set of {@code IndexDescriptor} instances describing Lucene index information, in particular the index name. * The index name can also be used to retrieve the actual {@code IndexManager} for this index via * <pre>{@code * ExtendedSearchIntegrator integrator = ... * IndexManager indexManager = integrator.getIndexManagerHolder().getIndexManager(String) * }</pre> * * For non sharded indexes there will be only a single {@code IndexDescriptor}. The empty set is returned for an unindexed type * @return a set of {@code IndexDescriptor} instances describing Lucene index information * @see org.hibernate.search.engine.integration.impl.ExtendedSearchIntegrator */ Set<IndexDescriptor> getIndexDescriptors(); /** * @return the class boost value, 1 being the default. */ float getStaticBoost(); /** * @return Dynamic boost strategy. There will always be a boost strategy, but the default strategy will apply a * boost of 1.0. */ BoostStrategy getDynamicBoost(); /** * @return the set of indexed properties in form of {@code PropertyDescriptor}s */ Set<PropertyDescriptor> getIndexedProperties(); /** * Retrieves the property descriptor for a given property name. * * @param propertyName the property name for which to return descriptor, cannot be {@code null} * * @return the property descriptor for the specified property name. {@code null} is returned in case a property with * the specified name does not exist * * @throws IllegalArgumentException in case {@code propertyName} is {@code null} */ PropertyDescriptor getProperty(String propertyName); /** * Retrieves the field descriptor for a given field name. * * @param fieldName the field name for which to return descriptor, cannot be {@code null} * * @return the field descriptor for the specified field name. {@code null} is returned in case a field with the specified name does not exist * * @throws IllegalArgumentException in case {@code fieldName} is {@code null} */ FieldDescriptor getIndexedField(String fieldName); /** * Returns the set of index descriptors for the indexed field generated by the property with the given name. * * @param propertyName the property name, cannot be {@code null} * * @return the set of index descriptors for the indexed field generated by the property with the given name. The empty set * is returned in case the property does not exist or does not produce any indexed fields. * * @throws IllegalArgumentException in case {@code propertyName} is {@code null} */ Set<FieldDescriptor> getFieldsForProperty(String propertyName); }