001: /*
002: * Copyright 2004-2006 the original author or authors.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.compass.annotations;
018:
019: import java.lang.annotation.ElementType;
020: import java.lang.annotation.Retention;
021: import java.lang.annotation.RetentionPolicy;
022: import java.lang.annotation.Target;
023:
024: /**
025: * A constant meta-data that can be defined on a {@link Searchable} class.
026: * <p/>
027: * A constant meta-data is a predefined name and value pair that will be
028: * saved in the search engine index.
029: * <p/>
030: * Multiple constants can be defined using the {@link SearchableConstants} annotation.
031: *
032: * @author kimchy
033: * @see Searchable
034: * @see SearchableConstants
035: */
036: @Target({ElementType.TYPE})
037: @Retention(RetentionPolicy.RUNTIME)
038: public @interface SearchableConstant {
039:
040: /**
041: * The name of the meta-data.
042: */
043: String name();
044:
045: /**
046: * A list of values that the meta-data will have.
047: */
048: String[] values();
049:
050: /**
051: * The boost level for the meta-data. Will cause hits
052: * based on this meta-data to rank higher.
053: */
054: float boost() default 1.0f;
055:
056: /**
057: * Specifies whether and how a meta-data property will be stored.
058: */
059: Store store() default Store.YES;
060:
061: /**
062: * Specifies whether and how a meta-data proeprty should be indexed.
063: */
064: Index index() default Index.TOKENIZED;
065:
066: /**
067: * Specifies whether and how a meta-data property should have term vectors.
068: */
069: TermVector termVector() default TermVector.NO;
070:
071: /**
072: * Expert:
073: * If set, omit normalization factors associated with this indexed field.
074: * This effectively disables indexing boosts and length normalization for this field.
075: */
076: boolean omitNorms() default false;
077:
078: /**
079: * Specifies a specialized analyzer lookup name that will be used to analyze
080: * the meta-data content.
081: * <p/>
082: * Defaults to Compass default analyzer.
083: */
084: String analyzer() default "";
085:
086: /**
087: * Specifies if this meta-data should be excluded from the generated
088: * "all" meta-data.
089: *
090: * @see SearchableAllMetaData#enable()
091: */
092: ExcludeFromAll excludeFromAll() default ExcludeFromAll.NO;
093:
094: /**
095: * Controls if the constant value should override the same constant defined
096: * elsewhere for the same searchable class.
097: */
098: boolean override() default true;
099:
100: /**
101: * Should this propety be included in the spell check index.
102: *
103: * <p>Note, most times this is not requried to be configured, since by default, the
104: * spell check index uses the "all" property.
105: */
106: SpellCheck spellCheck() default SpellCheck.EXCLUDE;
107:
108: /**
109: * Converter for the Constant meta-data mapping.
110: */
111: String converter() default "";
112: }
|