pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / contrib / benchmark / src / java / org / apache / lucene / benchmark / byTask / tasks / AddFacetedDocTask.java
1 package org.apache.lucene.benchmark.byTask.tasks;
2
3 /**
4  * Licensed to the Apache Software Foundation (ASF) under one or more
5  * contributor license agreements.  See the NOTICE file distributed with
6  * this work for additional information regarding copyright ownership.
7  * The ASF licenses this file to You under the Apache License, Version 2.0
8  * (the "License"); you may not use this file except in compliance with
9  * the License.  You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 import org.apache.lucene.benchmark.byTask.PerfRunData;
21 import org.apache.lucene.benchmark.byTask.feeds.FacetSource;
22 import org.apache.lucene.facet.index.CategoryContainer;
23 import org.apache.lucene.facet.index.CategoryDocumentBuilder;
24
25 /**
26  * Add a faceted document.
27  * <p>
28  * Config properties:
29  * <ul>
30  *  <li><b>with.facets</b>=&lt;tells whether to actually add any facets to the document| Default: true&gt;
31  *  <br>This config property allows to easily compare the performance of adding docs with and without facets.
32  *  Note that facets are created even when this is false, just that they are not added to the document (nor to the taxonomy).
33  * </ul> 
34  * <p>
35  * See {@link AddDocTask} for general document parameters and configuration.
36  * <p>
37  * Makes use of the {@link FacetSource} in effect - see {@link PerfRunData} for facet source settings.   
38  */
39 public class AddFacetedDocTask extends AddDocTask {
40
41   public AddFacetedDocTask(PerfRunData runData) {
42     super(runData);
43   }
44
45   private CategoryContainer facets = null;
46   private CategoryDocumentBuilder categoryDocBuilder = null;
47   private boolean withFacets = true;
48   
49   @Override
50   public void setup() throws Exception {
51     super.setup();
52     // create the facets even if they should not be added - allows to measure the effect of just adding facets 
53     facets = getRunData().getFacetSource().getNextFacets(facets);  
54     withFacets = getRunData().getConfig().get("with.facets", true);
55     if (withFacets) {
56       categoryDocBuilder = new CategoryDocumentBuilder(getRunData().getTaxonomyWriter());
57       categoryDocBuilder.setCategories(facets);
58     }
59   }
60
61   @Override
62   protected String getLogMessage(int recsCount) {
63     if (!withFacets) {
64       return super.getLogMessage(recsCount);
65     }
66     return super.getLogMessage(recsCount)+ " with facets";
67   }
68   
69   @Override
70   public int doLogic() throws Exception {
71     if (withFacets) {
72       categoryDocBuilder.build(doc);
73     }
74     return super.doLogic();
75   }
76
77 }