Example usage for org.apache.lucene.index IndexReader document

List of usage examples for org.apache.lucene.index IndexReader document

Introduction

In this page you can find the example usage for org.apache.lucene.index IndexReader document.

Prototype




public final Document document(int docID) throws IOException 

Source Link

Document

Returns the stored fields of the nth Document in this index.

Usage

From source file:org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl.java

License:Open Source License

protected static Set<String> deletePrimary(Collection<String> nodeRefs, IndexReader reader, boolean delete)
        throws LuceneIndexException {

    Set<String> refs = new LinkedHashSet<String>();

    for (String nodeRef : nodeRefs) {

        try {/*from ww w  . j a  v  a  2  s .  c  om*/
            TermDocs td = reader.termDocs(new Term("PRIMARYPARENT", 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 primary parent for " + nodeRef, e);
        }
    }

    return refs;

}

From source file:org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl.java

License:Open Source License

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 {//from  w ww .j  a va2 s .  c o m
            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;

}

From source file:org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl.java

License:Open Source License

protected static Set<String> deleteContainerAndBelow(String nodeRef, IndexReader reader, boolean delete,
        boolean cascade) throws LuceneIndexException {
    Set<String> refs = new LinkedHashSet<String>();

    try {/*from  ww w .  j a v  a2 s.c  om*/
        if (delete) {
            reader.deleteDocuments(new Term("ID", nodeRef));
        }
        refs.add(nodeRef);
        if (cascade) {
            TermDocs td = reader.termDocs(new Term("ANCESTOR", 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 container and below for " + nodeRef, e);
    }
    return refs;
}

From source file:org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl.java

License:Open Source License

protected boolean locateContainer(String nodeRef, IndexReader reader) {
    boolean found = false;
    try {/*from   ww  w .j a v  a 2  s.com*/
        TermDocs td = reader.termDocs(new Term("ID", nodeRef));
        while (td.next()) {
            int doc = td.doc();
            Document document = reader.document(doc);
            if (document.getField("ISCONTAINER") != null) {
                found = true;
                break;
            }
        }
        td.close();
    } catch (IOException e) {
        throw new LuceneIndexException("Failed to delete container and below for " + nodeRef, e);
    }
    return found;
}

From source file:org.alfresco.repo.search.impl.lucene.ADMLuceneIndexerImpl.java

License:Open Source License

private void addRootNodesToDeletionList() {
    IndexReader mainReader = null;
    try {/*from   w ww . ja v a2 s . c o  m*/
        try {
            mainReader = getReader();
            TermDocs td = mainReader.termDocs(new Term("ISROOT", "T"));
            while (td.next()) {
                int doc = td.doc();
                Document document = mainReader.document(doc);
                String id = document.get("ID");
                NodeRef ref = new NodeRef(id);
                deleteImpl(ref.toString(), getDeltaReader(), mainReader);
            }
            td.close();
        } catch (IOException e) {
            throw new LuceneIndexException("Failed to delete all primary nodes", e);
        }
    } finally {
        if (mainReader != null) {
            try {
                mainReader.close();
            } catch (IOException e) {
                throw new LuceneIndexException("Filed to close main reader", e);
            }
        }
        try {
            closeDeltaReader();
        } catch (Exception e) {
            s_logger.warn("Failed to close delta reader", e);
        }
    }
}

From source file:org.alfresco.repo.search.impl.lucene.ADMLuceneIndexerImpl.java

License:Open Source License

protected boolean deleteLeafOnly(String nodeRef, IndexReader reader, boolean delete)
        throws LuceneIndexException {
    boolean found = false;
    try {/*from   w w w  .j  a va2  s  . c o  m*/
        TermDocs td = reader.termDocs(new Term("LEAFID", nodeRef));
        while (td.next()) {
            found = true;
            if (delete) {
                reader.deleteDocument(td.doc());
            } else {
                break;
            }
        }
        td.close();
        if (found) {
            return true;
        }
        // For backward compatibility, use old method of locating non-container docs
        td = reader.termDocs(new Term("ID", nodeRef));
        while (td.next()) {
            int doc = td.doc();
            Document document = reader.document(doc);
            // Exclude all containers except the root (which is also a node!)
            Field path = document.getField("PATH");
            if (path == null || path.stringValue().length() == 0) {
                found = true;
                if (delete) {
                    reader.deleteDocument(doc);
                } else {
                    break;
                }
            }
        }
        td.close();
    } catch (IOException e) {
        throw new LuceneIndexException("Failed to delete container and below for " + nodeRef, e);
    }
    return found;
}

From source file:org.alfresco.repo.search.impl.lucene.query.LeafScorer.java

License:Open Source License

private String getPathLinkId(IndexReader reader, int n) throws IOException {
    if (reader instanceof CachingIndexReader) {
        CachingIndexReader cachingIndexReader = (CachingIndexReader) reader;
        return cachingIndexReader.getPathLinkId(n);
    } else {/*from w ww. ja  v  a2 s .c o m*/
        Document document = reader.document(n);
        Field[] fields = document.getFields("ID");
        if (fields != null) {
            Field id = fields[fields.length - 1];
            return (id == null) ? null : id.stringValue();
        } else {
            return null;
        }
    }
}

From source file:org.alfresco.repo.search.impl.lucene.query.LeafScorer.java

License:Open Source License

private String getIsCategory(IndexReader reader, int n) throws IOException {
    if (reader instanceof CachingIndexReader) {
        CachingIndexReader cachingIndexReader = (CachingIndexReader) reader;
        return cachingIndexReader.getIsCategory(n);
    } else {/*from w ww. jav  a  2 s . c o  m*/
        Document document = reader.document(n);
        Field isCategory = document.getField("ISCATEGORY");
        return (isCategory == null) ? null : isCategory.stringValue();
    }
}

From source file:org.alfresco.repo.search.impl.lucene.query.LeafScorer.java

License:Open Source License

private String getPath(IndexReader reader, int n) throws IOException {
    if (reader instanceof CachingIndexReader) {
        CachingIndexReader cachingIndexReader = (CachingIndexReader) reader;
        return cachingIndexReader.getPath(n);
    } else {/*from   w ww .ja v  a  2 s .com*/
        Document document = reader.document(n);
        Field path = document.getField("PATH");
        return (path == null) ? null : path.stringValue();
    }
}

From source file:org.alfresco.repo.search.impl.lucene.query.LeafScorer.java

License:Open Source License

private String getType(IndexReader reader, int n) throws IOException {
    if (reader instanceof CachingIndexReader) {
        CachingIndexReader cachingIndexReader = (CachingIndexReader) reader;
        return cachingIndexReader.getType(n);
    } else {//from  w w w.  j  a va  2s .  c  o  m
        Document document = reader.document(n);
        Field path = document.getField("TYPE");
        return (path == null) ? null : path.stringValue();
    }
}