Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public BitSet[] getBitSets(IndexSearcher indexSearcher,
- Category[] categories) {
- BitSet[] bitSets = new BitSet[categories.length];
- for(int i=0; i<categories.length; i++)
- {
- Query query = categories[i].getQuery();
- final BitSet bitset = new BitSet()
- indexSearcher.search(query, new HitCollector() {
- public void collect(int doc, float score) {
- bitSet.set(doc);
- }
- });
- bitSets[i] = bitSet;
- }
- return bitSets;
- }
- public int[] getCategroryCount(IndexSearcher indexSearcher,
- Query query,
- final BitSet[] bitSets) {
- final int[] count = new int[bitSets.length];
- indexSearcher.search(query, new HitCollector() {
- public void collect(int doc, float score) {
- for(int i=0; i<bitSets.length; i++) {
- if(bitSets[i].get(doc)) count[i]++;
- }
- }
- });
- return count;
- }
- int numDocs = 0;
- td.seek(terms);
- while (td.next()) {
- numDocs++;
- }
- int numDocs = terms.docFreq()
- public static void countDocumentsInCategories(IndexReader reader) throws IOException {
- TermEnum terms = null;
- TermDocs td = null;
- try {
- terms = reader.terms(new Term("Category", ""));
- td = reader.termDocs();
- do {
- Term currentTerm = terms.term();
- if (!currentTerm.field().equals("Category")) {
- break;
- }
- int numDocs = 0;
- td.seek(terms);
- while (td.next()) {
- numDocs++;
- }
- System.out.println(currentTerm.field() + " : " + currentTerm.text() + " --> " + numDocs);
- } while (terms.next());
- } finally {
- if (td != null) td.close();
- if (terms != null) terms.close();
- }
- }
- public static void main(String[] args) throws Exception {
- RAMDirectory store = new RAMDirectory();
- IndexWriter w = new IndexWriter(store, new StandardAnalyzer());
- addDocument(w, 1, "Apple", "fruit", "computer");
- addDocument(w, 2, "Orange", "fruit", "colour");
- addDocument(w, 3, "Dell", "computer");
- addDocument(w, 4, "Cumquat", "fruit");
- w.close();
- IndexReader r = IndexReader.open(store);
- countDocumentsInCategories(r);
- r.close();
- }
- private static void addDocument(IndexWriter w, int id, String name, String... categories) throws IOException {
- Document d = new Document();
- d.add(new Field("ID", String.valueOf(id), Field.Store.YES, Field.Index.UN_TOKENIZED));
- d.add(new Field("Name", name, Field.Store.NO, Field.Index.UN_TOKENIZED));
- for (String category : categories) {
- d.add(new Field("Category", category, Field.Store.NO, Field.Index.UN_TOKENIZED));
- }
- w.addDocument(d);
- }
Add Comment
Please, Sign In to add comment