List of usage examples for org.apache.lucene.search DocIdSetIterator nextDoc
public abstract int nextDoc() throws IOException;
From source file:lucene.security.search.DocumentVisibilityFilter.java
License:Apache License
public static DocIdSet getLogicalOr(final List<DocIdSet> list) throws IOException { if (list.size() == 0) { return DocIdSet.EMPTY_DOCIDSET; }//w w w. ja v a2 s. co m if (list.size() == 1) { DocIdSet docIdSet = list.get(0); Bits bits = docIdSet.bits(); if (bits == null) { throw new IOException("Bits are not allowed to be null for DocIdSet [" + docIdSet + "]."); } return docIdSet; } int index = 0; final Bits[] bitsArray = new Bits[list.size()]; int length = -1; for (DocIdSet docIdSet : list) { Bits bits = docIdSet.bits(); if (bits == null) { throw new IOException("Bits are not allowed to be null for DocIdSet [" + docIdSet + "]."); } bitsArray[index] = bits; index++; if (length < 0) { length = bits.length(); } else if (length != bits.length()) { throw new IOException( "Bits length need to be the same [" + length + "] and [" + bits.length() + "]"); } } final int len = length; return new DocIdSet() { @Override public Bits bits() throws IOException { return new Bits() { @Override public boolean get(int index) { for (int i = 0; i < bitsArray.length; i++) { if (bitsArray[i].get(index)) { return true; } } return false; } @Override public int length() { return len; } }; } @Override public boolean isCacheable() { return true; } @Override public DocIdSetIterator iterator() throws IOException { final DocIdSetIterator[] docIdSetIteratorArray = new DocIdSetIterator[list.size()]; long c = 0; int index = 0; for (DocIdSet docIdSet : list) { DocIdSetIterator iterator = docIdSet.iterator(); iterator.nextDoc(); docIdSetIteratorArray[index] = iterator; c += iterator.cost(); index++; } final long cost = c; return new DocIdSetIterator() { private int _docId = -1; @Override public int advance(int target) throws IOException { callAdvanceOnAllThatAreBehind(target); Arrays.sort(docIdSetIteratorArray, COMPARATOR); DocIdSetIterator iterator = docIdSetIteratorArray[0]; return _docId = iterator.docID(); } private void callAdvanceOnAllThatAreBehind(int target) throws IOException { for (int i = 0; i < docIdSetIteratorArray.length; i++) { DocIdSetIterator iterator = docIdSetIteratorArray[i]; if (iterator.docID() < target) { iterator.advance(target); } } } @Override public int nextDoc() throws IOException { return advance(_docId + 1); } @Override public int docID() { return _docId; } @Override public long cost() { return cost; } }; } }; }
From source file:lux.functions.Count.java
License:Mozilla Public License
@Override public UnfailingIterator<Int64Value> iterate(Query query, Evaluator saxon, String[] sortCriteria, int start) throws XPathException { int count = 0; long t = System.currentTimeMillis(); try {// w w w .j ava 2 s .com DocIdSetIterator counter = saxon.getSearcher().search(query); while (counter.nextDoc() != Scorer.NO_MORE_DOCS) { ++count; } } catch (IOException e) { throw new XPathException(e); } saxon.getQueryStats().totalTime = System.currentTimeMillis() - t; saxon.getQueryStats().docCount += count; return SingletonIterator.makeIterator(new Int64Value(count)); }
From source file:lux.functions.Exists.java
License:Mozilla Public License
@Override public UnfailingIterator<BooleanValue> iterate(Query query, Evaluator saxon, String[] sortCriteria, int start) throws XPathException { long t = System.currentTimeMillis(); boolean exists = false; try {/*from w ww .j a v a 2 s . c om*/ DocIdSetIterator iter = saxon.getSearcher().search(query); exists = (iter.nextDoc() != Scorer.NO_MORE_DOCS); } catch (IOException e) { throw new XPathException(e); } saxon.getQueryStats().totalTime = System.currentTimeMillis() - t; if (exists) { ++saxon.getQueryStats().docCount; } return SingletonIterator.makeIterator(BooleanValue.get(exists)); }
From source file:lux.IndexTest.java
License:Mozilla Public License
private void assertPathQuery(IndexTestSupport indexTestSupport) throws ParseException, IOException { SrndQuery q = new QueryParser().parse2("w(w({},\"ACT\"),\"SCENE\")"); Query q2 = q.makeLuceneQueryFieldNoBoost( indexTestSupport.indexer.getConfiguration().getFieldName(FieldRole.PATH), new BasicQueryFactory()); DocIdSetIterator iter = indexTestSupport.searcher.search(q2); int count = 0; while (iter.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) { ++count;/*from w w w. j ava 2 s. c o m*/ } assertEquals(5, count); }
From source file:lux.IndexTest.java
License:Mozilla Public License
private void assertFullTextQuery(IndexTestSupport indexTestSupport, String qName, String term, int expectedCount) throws IOException, ParserException { LuxSearcher searcher = indexTestSupport.searcher; XmlIndexer indexer = indexTestSupport.indexer; IndexConfiguration config = indexer.getConfiguration(); FieldDefinition field = config.getField(FieldRole.ELEMENT_TEXT); Query q = new XmlQueryParser(field.getName(), field.getAnalyzer()).parse(new ByteArrayInputStream( ("<QNameTextQuery fieldName=\"" + config.getFieldName(FieldRole.ELEMENT_TEXT) + "\" qName=\"" + qName + "\">" + term + "</QNameTextQuery>").getBytes())); DocIdSetIterator iter = searcher.search(q); int count = 0; while (iter.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) { ++count;//from w ww . java2s.co m } assertEquals(expectedCount, count); }
From source file:lux.IndexTest.java
License:Mozilla Public License
private void assertXPathIntField(IndexTestSupport indexTestSupport) throws ParseException, IOException { Query q = NumericRangeQuery.newIntRange("nodecount", 6000, 20000, true, true); DocIdSetIterator iter = indexTestSupport.searcher.search(q); int count = 0; while (iter.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) { ++count;// www. ja va 2 s .co m } assertEquals(1, count); }
From source file:lux.IndexTest.java
License:Mozilla Public License
private void assertXPathStringField(int expectedCount, String field, String term, IndexTestSupport indexTestSupport) throws ParseException, IOException { Query q = new TermQuery(new Term(field, term)); DocIdSetIterator iter = indexTestSupport.searcher.search(q); int count = 0; while (iter.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) { ++count;//from www. j av a 2 s. c o m } assertEquals("Wrong number of matches for " + q.toString(), expectedCount, count); }
From source file:lux.IndexTest.java
License:Mozilla Public License
private void assertTotalDocs() throws IOException { LuxSearcher searcher = new LuxSearcher(dir); DocIdSetIterator results = searcher.search(new MatchAllDocsQuery()); int count = 0; while (results.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) { ++count;//from ww w . ja va 2 s .com } assertEquals(6641, count); /* */ searcher.close(); }
From source file:org.apache.blur.filter.IndexFileBitSet.java
License:Apache License
public void create(DocIdSetIterator it) throws IOException { String fileName = getFileName(); if (_directory.fileExists(getFileName())) { LOG.warn("Filter [{0}] in directory [{1}] being recreated due to incorrect size.", fileName, _directory);//w w w . ja v a 2 s . c om _directory.deleteFile(fileName); } IndexOutput output = _directory.createOutput(fileName, IOContext.READ); int index; int currentWordNum = 0; long wordValue = 0; while ((index = it.nextDoc()) < _numBits) { int wordNum = index >> 6; // div 64 if (currentWordNum > wordNum) { throw new IOException("We got a problem here!"); } while (currentWordNum < wordNum) { output.writeLong(wordValue); currentWordNum++; wordValue = 0; } int bit = index & 0x3f; // mod 64 long bitmask = 1L << bit; wordValue |= bitmask; } if (_numBits > 0) { int totalWords = (_numBits / 64) + 1; while (currentWordNum < totalWords) { output.writeLong(wordValue); currentWordNum++; wordValue = 0; } } output.close(); }
From source file:org.apache.blur.filter.IndexFileBitSetTest.java
License:Apache License
private void checkEquals(DocIdSetIterator expected, DocIdSetIterator actual, int numBits) throws IOException { int expectedNextDoc; while ((expectedNextDoc = expected.nextDoc()) < numBits) { int actualNextDoc = actual.nextDoc(); assertEquals(expectedNextDoc, actualNextDoc); }/*from ww w. j a va 2s .c o m*/ }