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 dynamic meta data evaluation of the given expression using an expression
026: * language library.
027: *
028: * @author kimchy
029: */
030: @Target({ElementType.TYPE})
031: @Retention(RetentionPolicy.RUNTIME)
032: public @interface SearchableDynamicMetaData {
033:
034: /**
035: * The name of the meta-data. The name will be the value the contend will
036: * be saved under, so it can later be searched using "author:london" (here
037: * the name is author).
038: */
039: String name();
040:
041: /**
042: * The expression to be evaluated by the dynamic expression evaluation library.
043: */
044: String expression();
045:
046: /**
047: * The dynamic converter lookup name. Compass built in ones include: jexl, velocity.
048: */
049: String converter();
050:
051: /**
052: * The boost level for the meta-data. Will cause hits
053: * based on this meta-data to rank higher.
054: */
055: float boost() default 1.0f;
056:
057: /**
058: * Specifies whether and how a meta-data property will be stored.
059: */
060: Store store() default Store.YES;
061:
062: /**
063: * Specifies whether and how a meta-data proeprty should be indexed.
064: */
065: Index index() default Index.TOKENIZED;
066:
067: /**
068: * Specifies whether and how a meta-data property should have term vectors.
069: */
070: TermVector termVector() default TermVector.NO;
071:
072: /**
073: * Specifies whether and how the meta-data proeprty should value will be revered.
074: */
075: Reverse reverse() default Reverse.NO;
076:
077: /**
078: * Specifies a specialized analyzer lookup name that will be used to analyze
079: * the meta-data content.
080: * <p/>
081: * Defaults to Compass default analyzer.
082: */
083: String analyzer() default "";
084:
085: /**
086: * Specifies if this meta-data should be excluded from the generated
087: * "all" meta-data.
088: *
089: * @see SearchableAllMetaData#enable()
090: */
091: ExcludeFromAll excludeFromAll() default ExcludeFromAll.NO;
092:
093: /**
094: * If there is already an existing id with the same field/property name defined,
095: * will override it.
096: */
097: boolean override() default true;
098:
099: /**
100: * The format to apply to the value. Only applies to format-able converters
101: * (like dates and numbers).
102: */
103: String format() default "";
104:
105: /**
106: * If using a format, the type of the expression result.
107: */
108: Class type() default Object.class;
109:
110: /**
111: * A null value to use to store in the index when the property has a <code>null</code>
112: * value. Defaults to not storing null values if the globabl setting of
113: * <code>compass.mapping.nullvalue</code> is not set. If it set, disabling the null
114: * value can be done by setting it to {@link org.compass.core.config.CompassEnvironment.NullValue#DISABLE_NULL_VALUE_FOR_MAPPING}
115: * value (<code>$disable$</code>).
116: */
117: String nullValue() default "";
118:
119: /**
120: * Should this propety be included in the spell check index.
121: *
122: * <p>Note, most times this is not requried to be configured, since by default, the
123: * spell check index uses the "all" property.
124: */
125: SpellCheck spellCheck() default SpellCheck.EXCLUDE;
126: }
|