Example usage for org.apache.lucene.index IndexWriter addDocument

List of usage examples for org.apache.lucene.index IndexWriter addDocument

Introduction

In this page you can find the example usage for org.apache.lucene.index IndexWriter addDocument.

Prototype

public long addDocument(Iterable<? extends IndexableField> doc) throws IOException 

Source Link

Document

Adds a document to this index.

Usage

From source file:com.edgenius.wiki.search.lucene.IndexWriterTemplate.java

License:Open Source License

/**
 * @param documentCreator//from ww  w .  ja  v  a  2  s. co m
 */
public void addDocument(Document document) {
    IndexWriter writer = indexFactory.getIndexWriter();
    try {
        writer.addDocument(document);
        writer.commit();
    } catch (IOException ex) {
        log.error("Error during add a document", ex);
        throw new IndexAccessException("Error during add a document.", ex);
    }
}

From source file:com.edgenius.wiki.search.service.IndexServiceImpl.java

License:Open Source License

/**
 * /*from w  w  w .  j  a v a2  s. co m*/
 */
public void rebuildAttachmentIndex() {
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // attachment
    final List<CrFileNode> attachments = crFileNodeDAO.getAllCurrentNode();
    if (attachments != null) {
        attachmentLock.lock();
        try {
            attachmentTemplate.addDocument(new IndexCallback() {
                @Override
                public void addDocument(IndexWriter attWriter) {
                    for (CrFileNode node : attachments) {
                        if (RepositoryService.DEFAULT_SPACE_NAME.equals(node.getSpaceUname())) {
                            //don't index default space stuff: it is user portrait etc.
                            continue;
                        }
                        try {
                            FileNode fNode = FileNode.copyPersistToNode(node);
                            attWriter.addDocument(createAttachmentDocument(node.getSpaceUname(), fNode, null));
                        } catch (Exception e) {
                            log.error("Rebuild index failed on attachment" + node, e);
                        }
                    }
                }
            });
        } finally {
            attachmentLock.unlock();
            log.info("Attachment index is rebuilt");
        }
    }
}

From source file:com.edgenius.wiki.search.service.IndexServiceImpl.java

License:Open Source License

/**
 * /*from w  w  w. j a v a2s .  co m*/
 */
public void rebuildSpaceTagIndex() {
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // SpaceTag
    final List<SpaceTag> spaceTags = spaceTagDAO.getObjects();
    if (spaceTags != null) {
        spaceTagLock.lock();
        try {
            spaceTagTemplate.addDocument(new IndexCallback() {
                @Override
                public void addDocument(IndexWriter spaceTagWriter) {
                    for (SpaceTag tag : spaceTags) {
                        try {
                            spaceTagWriter.addDocument(createSpaceTagDocument(tag));
                        } catch (Exception e) {
                            log.error("Rebuild index failed on space  tag" + tag, e);
                        }
                    }
                }
            });
        } finally {
            spaceTagLock.unlock();
            log.info("Space tag index is rebuilt");
        }
    }
}

From source file:com.edgenius.wiki.search.service.IndexServiceImpl.java

License:Open Source License

/**
 * //from w  ww.  j  a va  2 s  . c  o m
 */
public void rebuildPageTagIndex() {
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // PageTag
    final List<PageTag> pageTags = pageTagDAO.getObjects();
    if (pageTags != null) {
        pageTagLock.lock();
        try {
            pageTagTemplate.addDocument(new IndexCallback() {

                @Override
                public void addDocument(IndexWriter pageTagWriter) {
                    for (PageTag tag : pageTags) {
                        try {
                            pageTagWriter.addDocument(createPageTagDocument(tag));
                        } catch (Exception e) {
                            log.error("Rebuild index failed on page tag" + tag, e);
                        }
                    }
                }
            });
        } finally {
            pageTagLock.unlock();
            log.info("Page tag index is rebuilt");
        }
    }
}

From source file:com.edgenius.wiki.search.service.IndexServiceImpl.java

License:Open Source License

/**
 * //from   w w w  .java2 s  . c o  m
 */
public void rebuildUserIndex() {
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // User
    final List<User> users = userDAO.getObjects();
    if (users != null) {
        userLock.lock();
        try {
            userTemplate.addDocument(new IndexCallback() {

                @Override
                public void addDocument(IndexWriter userWriter) {
                    for (User user : users) {
                        try {
                            userWriter.addDocument(createUserDocument(user));
                        } catch (Exception e) {
                            log.error("Rebuild index failed on user" + user, e);
                        }
                    }

                }
            });
        } finally {
            userLock.unlock();
            log.info("User index is rebuilt");
        }
    }
}

From source file:com.edgenius.wiki.search.service.IndexServiceImpl.java

License:Open Source License

public void rebuildRoleIndex() {
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Role - only group type role is indexed
    final List<Role> roles = roleDAO.getRoles(Role.TYPE_GROUP, null);
    if (roles != null) {
        roleLock.lock();/*from w w  w.j a v a 2  s .  com*/
        try {
            roleTemplate.addDocument(new IndexCallback() {

                @Override
                public void addDocument(IndexWriter roleWriter) {
                    for (Role role : roles) {
                        try {
                            roleWriter.addDocument(createRoleDocument(role));
                        } catch (Exception e) {
                            log.error("Rebuild index failed on role" + role, e);
                        }
                    }
                }
            });
        } finally {
            roleLock.unlock();
            log.info("Role index is rebuilt");
        }
    }
}

From source file:com.edgenius.wiki.search.service.IndexServiceImpl.java

License:Open Source License

/**
 * // w  ww .ja v  a  2  s . c o  m
 */
public void rebuildSpaceIndex() {
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Space
    final List<Space> spaces = spaceDAO.getObjects();
    if (spaces != null) {
        spaceLock.lock();
        try {
            spaceTemplate.addDocument(new IndexCallback() {
                @Override
                public void addDocument(IndexWriter spaceWriter) {
                    for (Space space : spaces) {
                        try {
                            //skip system space 
                            if (StringUtils.equalsIgnoreCase(SharedConstants.SYSTEM_SPACEUNAME,
                                    space.getUnixName()))
                                continue;
                            spaceWriter.addDocument(createSpaceDocument(space));
                        } catch (Exception e) {
                            log.error("Rebuild space index failed " + space, e);
                        }
                    }
                }
            });
        } finally {
            spaceLock.unlock();
            log.info("Space index is rebuilt");
        }
    }
}

From source file:com.edgenius.wiki.search.service.IndexServiceImpl.java

License:Open Source License

/**
 * /*ww  w . j a  v  a 2 s  .  c om*/
 */
public void rebuildWidgetIndex() {
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Space
    final List<Widget> widgets = widgetDAO.getObjects();
    if (widgets != null) {
        widgetLock.lock();
        try {
            widgetTemplate.addDocument(new IndexCallback() {
                @Override
                public void addDocument(IndexWriter widgetWriter) {
                    for (Widget widget : widgets) {
                        try {
                            widgetWriter.addDocument(createWidgetDocument(widget));
                        } catch (Exception e) {
                            log.error("Rebuild widget index failed " + widget, e);
                        }
                    }
                }
            });
        } finally {
            widgetLock.unlock();
            log.info("Widget index is rebuilt");
        }
    }
}

From source file:com.edgenius.wiki.search.service.IndexServiceImpl.java

License:Open Source License

/**
 * /* www .j a v  a2s . c om*/
 */
public void rebuildCommentIndex() {
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // page comment
    final List<PageComment> comments = commentDAO.getObjects();
    IndexWriter commentWriter = null;
    if (comments != null) {
        commentLock.lock();
        try {
            commentTemplate.addDocument(new IndexCallback() {

                @Override
                public void addDocument(IndexWriter commentWriter) {

                    for (PageComment comment : comments) {
                        try {
                            commentWriter.addDocument(createCommentDocument(comment));
                        } catch (Exception e) {
                            log.error("Rebuild index failed on comment. Owner page title "
                                    + comment.getPage().getTitle(), e);
                        }
                    }
                }
            });
        } finally {
            try {
                if (commentWriter != null)
                    commentWriter.close();
            } catch (Exception e) {
                log.error("Close comment index failed ", e);
            }
            commentLock.unlock();

            log.info("Comment index is rebuilt");
        }
    }
}

From source file:com.edgenius.wiki.search.service.IndexServiceImpl.java

License:Open Source License

/**
 * //w  ww .j  a  v  a  2s . c o m
 */
public void rebuildPageIndex() {
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // page

    //get how many page in whole system, then decide if use optimised way to build indexing
    final long size = pageDAO.getSystemPageCount();
    if (size > 0) {
        pageLock.lock();
        try {
            pageTemplate.addDocument(new IndexCallback() {

                @Override
                public void addDocument(IndexWriter pageWriter) {
                    //it is memory killer if using pageDAO.getObjects(); Now read page by native SQL and initialise object manually.
                    //Current page returns:
                    //PageTitle, PageUUID, page.getContent().getContent(), 
                    //page.getSpace().getUnixName(), 
                    //page.getSpace().getHomepage().getPageUuid()
                    //page.getSpace().getUid()
                    //page.getSpace().getSetting()
                    final int returnNum = 500;
                    int start = 0;
                    int indexedSize = 0, skipped = 0;
                    Map<Integer, Space> spaceCache = new HashMap<Integer, Space>();

                    //get pages by returnNum count size list and looping until all pages done
                    do {
                        List<Page> pages = pageDAO.getPageForIndexing(start, returnNum);
                        if (pages == null) {
                            AuditLogger.error("PageDAO get null from PageForIndex():start" + start);
                            break;
                        }

                        //insert space information - the basic assumption is, space is less. So I cache all spaces into a Hashmap.
                        for (Page page : pages) {
                            //current page only has spaceUid value
                            Space space = spaceCache.get(page.getSpace().getUid());
                            if (space == null) {
                                space = spaceDAO.get(page.getSpace().getUid());

                                if (space == null) {
                                    AuditLogger.error(
                                            "Page get null space by spaceUid:" + page.getSpace().getUid());
                                    continue;
                                }

                                spaceCache.put(space.getUid(), space);
                            }
                            page.setSpace(space);

                        }

                        //index current page list
                        for (Page page : pages) {

                            try {
                                if (WikiUtil.hasBlogRender(page, themeService)) {
                                    log.info("Page has blog macro, skip indexing:" + page.getTitle());
                                    skipped++;
                                    continue;
                                }
                                log.debug("Page index rebuilding:" + page.getTitle());

                                //skip system space pages
                                if (StringUtils.equalsIgnoreCase(SharedConstants.SYSTEM_SPACEUNAME,
                                        page.getSpace() != null ? page.getSpace().getUnixName() : null))
                                    continue;
                                pageWriter.addDocument(createPageDocument(page));
                                indexedSize++;
                            } catch (Exception e) {
                                log.error("Rebuild page index failed " + page, e);
                            }
                        }

                        //ready for next bundle
                        start += returnNum;
                    } while (start < size);

                    log.info(new StringBuilder("Page index rebuild. Expected: ").append(size)
                            .append(": Actual indexed:").append(indexedSize).append(": Normal skipped:")
                            .append(skipped).append(": Failed ").append((size - indexedSize - skipped))
                            .toString());

                }
            });

        } finally {

            pageLock.unlock();

            log.info("Page index is rebuilt");
        }

    }

}