add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / facet / src / java / org / apache / lucene / facet / enhancements / params / EnhancementsIndexingParams.java
1 package org.apache.lucene.facet.enhancements.params;
2
3 import java.util.List;
4
5 import org.apache.lucene.facet.enhancements.CategoryEnhancement;
6 import org.apache.lucene.facet.enhancements.EnhancementsDocumentBuilder;
7 import org.apache.lucene.facet.index.attributes.CategoryProperty;
8 import org.apache.lucene.facet.index.params.FacetIndexingParams;
9 import org.apache.lucene.facet.index.streaming.CategoryParentsStream;
10
11 /**
12  * Licensed to the Apache Software Foundation (ASF) under one or more
13  * contributor license agreements.  See the NOTICE file distributed with
14  * this work for additional information regarding copyright ownership.
15  * The ASF licenses this file to You under the Apache License, Version 2.0
16  * (the "License"); you may not use this file except in compliance with
17  * the License.  You may obtain a copy of the License at
18  *
19  *     http://www.apache.org/licenses/LICENSE-2.0
20  *
21  * Unless required by applicable law or agreed to in writing, software
22  * distributed under the License is distributed on an "AS IS" BASIS,
23  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24  * See the License for the specific language governing permissions and
25  * limitations under the License.
26  */
27
28 /**
29  * {@link FacetIndexingParams Facet indexing parameters} for defining
30  * {@link CategoryEnhancement category enhancements}. It must contain at least
31  * one enhancement, otherwise nothing is "enhanced" about it. When there are
32  * more than one, the order matters - see {@link #getCategoryEnhancements()}.
33  * 
34  * @see EnhancementsDocumentBuilder
35  * @lucene.experimental
36  */
37 public interface EnhancementsIndexingParams extends FacetIndexingParams {
38
39   /**
40    * Add {@link CategoryEnhancement}s to the indexing parameters
41    * @param enhancements enhancements to add
42    */
43   public void addCategoryEnhancements(CategoryEnhancement... enhancements);
44
45   /**
46    * Get a list of the active category enhancements. If no enhancements exist
47    * return {@code null}. The order of enhancements in the returned list
48    * dictates the order in which the enhancements data appear in the category
49    * tokens payload.
50    * 
51    * @return A list of the active category enhancements, or {@code null} if
52    *         there are no enhancements.
53    */
54   public List<CategoryEnhancement> getCategoryEnhancements();
55
56   /**
57    * Get a list of {@link CategoryProperty} classes to be retained when
58    * creating {@link CategoryParentsStream}.
59    * 
60    * @return the list of {@link CategoryProperty} classes to be retained when
61    *         creating {@link CategoryParentsStream}, or {@code null} if there
62    *         are no such properties.
63    */
64   public List<Class<? extends CategoryProperty>> getRetainableProperties();
65
66 }