pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / facet / src / java / org / apache / lucene / facet / search / TotalFacetCounts.java
diff --git a/lucene-java-3.4.0/lucene/contrib/facet/src/java/org/apache/lucene/facet/search/TotalFacetCounts.java b/lucene-java-3.4.0/lucene/contrib/facet/src/java/org/apache/lucene/facet/search/TotalFacetCounts.java
deleted file mode 100644 (file)
index 4ab9e81..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-package org.apache.lucene.facet.search;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.store.LockObtainFailedException;
-
-import org.apache.lucene.facet.index.params.CategoryListParams;
-import org.apache.lucene.facet.index.params.FacetIndexingParams;
-import org.apache.lucene.facet.search.aggregator.Aggregator;
-import org.apache.lucene.facet.search.aggregator.CountingAggregator;
-import org.apache.lucene.facet.search.cache.CategoryListCache;
-import org.apache.lucene.facet.search.cache.CategoryListData;
-import org.apache.lucene.facet.search.params.FacetSearchParams;
-import org.apache.lucene.facet.taxonomy.TaxonomyReader;
-import org.apache.lucene.facet.util.PartitionsUtils;
-import org.apache.lucene.facet.util.ScoredDocIdsUtils;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Maintain Total Facet Counts per partition, for given parameters:
- * <ul> 
- *  <li>Index reader of an index</li>
- *  <li>Taxonomy index reader</li>
- *  <li>Facet indexing params (and particularly the category list params)</li>
- *  <li></li>
- * </ul>
- * The total facet counts are maintained as an array of arrays of integers, 
- * where a separate array is kept for each partition.
- * 
- * @lucene.experimental
- */
-public class TotalFacetCounts {
-  
-  /** total facet counts per partition: totalCounts[partition][ordinal%partitionLength] */
-  private int[][] totalCounts = null;
-  
-  private final TaxonomyReader taxonomy;
-  private final FacetIndexingParams facetIndexingParams;
-
-  private final static AtomicInteger atomicGen4Test = new AtomicInteger(1);
-  /** Creation type for test purposes */
-  enum CreationType { Computed, Loaded } // for testing
-  final int gen4test;
-  final CreationType createType4test;
-  
-  /** 
-   * Construct by key - from index Directory or by recomputing.
-   * @param key the key mapping of this total facet counts (index, taxonomy, category lists...) 
-   */
-  private TotalFacetCounts (TaxonomyReader taxonomy, FacetIndexingParams facetIndexingParams,
-      int[][] counts, CreationType createType4Test) throws IOException, LockObtainFailedException {
-    this.taxonomy = taxonomy;
-    this.facetIndexingParams = facetIndexingParams;
-    this.totalCounts = counts;
-    this.createType4test = createType4Test;
-    this.gen4test = atomicGen4Test.incrementAndGet();
-  }
-
-  /**
-   * Fill a partition's array with the TotalCountsArray values.
-   * @param partitionArray array to fill
-   * @param partition number of required partition 
-   */
-  public void fillTotalCountsForPartition(int[] partitionArray, int partition) {
-    int partitionSize = partitionArray.length;
-    int[] countArray = totalCounts[partition];
-    if (countArray == null) {
-      countArray = new int[partitionSize];
-      totalCounts[partition] = countArray;
-    }
-    int length = Math.min(partitionSize, countArray.length);
-    System.arraycopy(countArray, 0, partitionArray, 0, length);
-  }
-  
-  /**
-   * Return the total count of an input category
-   * @param ordinal ordinal of category whose total count is required 
-   */
-  public int getTotalCount(int ordinal) {
-    int partition = PartitionsUtils.partitionNumber(facetIndexingParams,ordinal);
-    int offset = ordinal % PartitionsUtils.partitionSize(facetIndexingParams, taxonomy);
-    return totalCounts[partition][offset];
-  }
-  
-  static TotalFacetCounts loadFromFile(File inputFile, TaxonomyReader taxonomy, 
-      FacetIndexingParams facetIndexingParams) throws IOException {
-    DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(inputFile)));
-    try {
-      int[][] counts = new int[dis.readInt()][];
-      for (int i=0; i<counts.length; i++) {
-        int size = dis.readInt();
-        if (size<0) {
-          counts[i] = null;
-        } else {
-          counts[i] = new int[size];
-          for (int j=0; j<size; j++) {
-            counts[i][j] = dis.readInt();
-          }
-        }
-      }
-      return new TotalFacetCounts(taxonomy, facetIndexingParams, counts, CreationType.Loaded);
-    } finally {
-      dis.close();
-    }
-  }
-
-  static void storeToFile(File outputFile, TotalFacetCounts tfc) throws IOException {
-    DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(outputFile)));
-    try {
-      dos.writeInt(tfc.totalCounts.length);
-      for (int[] counts : tfc.totalCounts) {
-        if (counts == null) {
-          dos.writeInt(-1);
-        } else {
-          dos.writeInt(counts.length);
-          for (int i : counts) {
-            dos.writeInt(i);
-          }
-        }
-      }
-    } finally {
-      dos.close();
-    }
-  }
-
-  static TotalFacetCounts compute(final IndexReader indexReader,
-      final TaxonomyReader taxonomy, final FacetIndexingParams facetIndexingParams,
-      final CategoryListCache clCache) throws IOException {
-    int partitionSize = PartitionsUtils.partitionSize(facetIndexingParams, taxonomy);
-    final int[][] counts = new int[(int) Math.ceil(taxonomy.getSize()  /(float) partitionSize)][partitionSize];
-    FacetSearchParams newSearchParams = new FacetSearchParams(facetIndexingParams); 
-      //createAllListsSearchParams(facetIndexingParams,  this.totalCounts);
-    FacetsAccumulator fe = new StandardFacetsAccumulator(newSearchParams, indexReader, taxonomy) {
-      @Override
-      protected HashMap<CategoryListIterator, Aggregator> getCategoryListMap(
-          FacetArrays facetArrays, int partition) throws IOException {
-        
-        Aggregator aggregator = new CountingAggregator(counts[partition]);
-        HashMap<CategoryListIterator, Aggregator> map = new HashMap<CategoryListIterator, Aggregator>();
-        for (CategoryListParams clp: facetIndexingParams.getAllCategoryListParams()) {
-          final CategoryListIterator cli = clIteraor(clCache, clp, indexReader, partition);
-          map.put(cli, aggregator);
-        }
-        return map;
-      }
-    };
-    fe.setComplementThreshold(FacetsAccumulator.DISABLE_COMPLEMENT);
-    fe.accumulate(ScoredDocIdsUtils.createAllDocsScoredDocIDs(indexReader));
-    return new TotalFacetCounts(taxonomy, facetIndexingParams, counts, CreationType.Computed);
-  }
-  
-  static CategoryListIterator clIteraor(CategoryListCache clCache, CategoryListParams clp, 
-      IndexReader indexReader, int partition) throws IOException {
-    if (clCache != null) {
-      CategoryListData cld = clCache.get(clp);
-      if (cld != null) {
-        return cld.iterator(partition);
-      }
-    }
-    return clp.createCategoryListIterator(indexReader, partition);
-  }
-}
\ No newline at end of file