Refine search
@Override protected Object createValue(IndexReader reader, Entry entryKey) throws IOException { Entry entry = entryKey; String field = entry.field; if (reader.maxDoc() == reader.docFreq(new Term(field))) { return DocIdSet.EMPTY_DOCIDSET; } OpenBitSet res = new OpenBitSet(reader.maxDoc()); TermDocs termDocs = reader.termDocs(); TermEnum termEnum = reader.terms (new Term (field)); try { do { Term term = termEnum.term(); if (term==null || term.field() != field) break; termDocs.seek (termEnum); while (termDocs.next()) { res.fastSet(termDocs.doc()); } } while (termEnum.next()); } finally { termDocs.close(); termEnum.close(); } res.flip(0, reader.maxDoc()); return res; } }
private BitSet initShareableNodes(IndexReader delegatee) throws IOException { BitSet shareableNodes = new BitSet(); TermDocs tDocs = delegatee.termDocs(new Term(FieldNames.SHAREABLE_NODE, "")); try { while (tDocs.next()) { shareableNodes.set(tDocs.doc()); } } finally { tDocs.close(); } return shareableNodes; }
public void generate(IndexReader reader) throws IOException { TermEnum enumerator = new WildcardTermEnum(reader, wildcard); TermDocs termDocs = reader.termDocs(); try { do { Term term = enumerator.term(); if (term==null) break; termDocs.seek(term); while (termDocs.next()) { handleDoc(termDocs.doc()); } } while (enumerator.next()); } finally { termDocs.close(); enumerator.close(); } } }
public Map<String, String> search(String lang, String key) { Map<String, String> result = null; try { TermDocs termDocs = indexReader.termDocs(new Term(lang, key)); if (termDocs.next()) { Document doc = indexReader.document(termDocs.doc()); result = documentToMap(doc); return result; } } catch (IOException e) { logger.error(e); } return new HashMap<String, String>(); }
/** * @inheritDoc */ public final int read(int[] docs, int[] freqs) throws IOException { for (;;) { int num = in.read(docs, freqs); if (num == 0) { // no more docs return 0; } // need to check for deleted docs int numDeleted = 0; for (int i = 0; i < num; i++) { if (deleted.get(docs[i])) { numDeleted++; continue; } // check if we need to shift if (numDeleted > 0) { docs[i - numDeleted] = docs[i]; freqs[i - numDeleted] = freqs[i]; } } if (num != numDeleted) { return num - numDeleted; } } }
protected static Set<String> deleteReference(Collection<String> nodeRefs, IndexReader reader, boolean delete) throws LuceneIndexException { Set<String> refs = new LinkedHashSet<String>(); for (String nodeRef : nodeRefs) { try { TermDocs td = reader.termDocs(new Term("PARENT", nodeRef)); while (td.next()) { int doc = td.doc(); Document document = reader.document(doc); String[] ids = document.getValues("ID"); refs.add(ids[ids.length - 1]); if (delete) { reader.deleteDocument(doc); } } td.close(); } catch (IOException e) { throw new LuceneIndexException("Failed to delete node by parent for " + nodeRef, e); } } return refs; }
public String search(String key) { String result = null; try { TermDocs termDocs = indexReader.termDocs(keyTerm.createTerm(key)); if (termDocs.next()) { Document doc = indexReader.document(termDocs.doc()); result = doc.get(valueFieldName); } } catch (IOException e) { logger.error(e); } return result; }
public String search(String page) { String pageAbstract = null; try { TermDocs termDocs = indexReader.termDocs(keyTerm.createTerm(page)); if (termDocs.next()) { Document doc = indexReader.document(termDocs.doc()); pageAbstract = new String(doc.getBinaryValue("xml")); } } catch (Exception e) { return new String(); } return pageAbstract; }
/** * Converts terms docs into an array of resources. */ public static Resource[] hitsToResourceArray(final TermDocs termDocs, IndexReader indexReader, LuceneSearchEngine searchEngine) throws IOException { ArrayList<Resource> list = new ArrayList<Resource>(); while (termDocs.next()) { list.add(new LuceneResource(indexReader.document(termDocs.doc()), termDocs.doc(), searchEngine.getSearchEngineFactory())); } return list.toArray(new Resource[list.size()]); }
public boolean next() throws IOException { pointer++; if (pointer >= pointerMax) { pointerMax = termDocs.read(docs, freqs); // refill buffer if (pointerMax != 0) { pointer = 0; } else { termDocs.close(); // close stream doc = Integer.MAX_VALUE; // set to sentinel value return false; } } doc = docs[pointer]; return true; }
public static Map<Integer, Integer> getFrequencies( final IndexReader reader, final Term term, final int[] docIDs) throws CorruptIndexException, IOException { final Map<Integer, Integer> id2freq = new HashMap<Integer, Integer>(); final TermDocs tds = reader.termDocs(term); if (tds != null) { for (final int docID : docIDs) { // Skip to the next docID tds.skipTo(docID); // Get its term frequency id2freq.put(docID, tds.freq()); } } return id2freq; }