001: /*
002: * File : $Source: /usr/local/cvs/opencms/src/org/opencms/search/I_CmsIndexer.java,v $
003: * Date : $Date: 2008-02-27 12:05:38 $
004: * Version: $Revision: 1.18 $
005: *
006: * This library is part of OpenCms -
007: * the Open Source Content Management System
008: *
009: * Copyright (c) 2002 - 2008 Alkacon Software GmbH (http://www.alkacon.com)
010: *
011: * This library is free software; you can redistribute it and/or
012: * modify it under the terms of the GNU Lesser General Public
013: * License as published by the Free Software Foundation; either
014: * version 2.1 of the License, or (at your option) any later version.
015: *
016: * This library is distributed in the hope that it will be useful,
017: * but WITHOUT ANY WARRANTY; without even the implied warranty of
018: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: * Lesser General Public License for more details.
020: *
021: * For further information about Alkacon Software GmbH, please see the
022: * company website: http://www.alkacon.com
023: *
024: * For further information about OpenCms, please see the
025: * project website: http://www.opencms.org
026: *
027: * You should have received a copy of the GNU Lesser General Public
028: * License along with this library; if not, write to the Free Software
029: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
030: */
031:
032: package org.opencms.search;
033:
034: import org.opencms.file.CmsObject;
035: import org.opencms.report.I_CmsReport;
036:
037: import java.util.List;
038:
039: import org.apache.lucene.index.IndexReader;
040: import org.apache.lucene.index.IndexWriter;
041:
042: /**
043: * Interface for an indexer indexing Cms resources.<p>
044: *
045: * @author Carsten Weinholz
046: * @author Thomas Weckert
047: *
048: * @version $Revision: 1.18 $
049: *
050: * @since 6.0.0
051: */
052: public interface I_CmsIndexer {
053:
054: /**
055: * Incremental index update - delete the index entry for all resources in the given list.<p>
056: *
057: * @param reader the index reader to delete the entries from
058: * @param resourcesToDelete a list of <code>{@link org.opencms.db.CmsPublishedResource}</code> instances that must be deleted
059: *
060: * @throws CmsIndexException if something goes wrong
061: */
062: void deleteResources(IndexReader reader, List resourcesToDelete)
063: throws CmsIndexException;
064:
065: /**
066: * Calculates the data for an incremental search index update.<p>
067: *
068: * @param source the search index source to update
069: * @param publishedResources a list of <code>{@link org.opencms.db.CmsPublishedResource}</code> objects that are to be updated
070: *
071: * @return a container with the information about the resources to delete and / or update
072: *
073: * @throws CmsIndexException if something goes wrong
074: */
075: CmsSearchIndexUpdateData getUpdateData(CmsSearchIndexSource source,
076: List publishedResources) throws CmsIndexException;
077:
078: /**
079: * Creates and initializes a new instance of this indexer implementation.<p>
080: *
081: * @param cms the OpenCms user context to use when reading resources from the VFS during indexing
082: * @param report the report to write the indexing output to
083: * @param index the search index to update
084: *
085: * @return a new instance of this indexer implementation
086: */
087: I_CmsIndexer newInstance(CmsObject cms, I_CmsReport report,
088: CmsSearchIndex index);
089:
090: /**
091: * Rebuilds the index for the given configured index source.<p>
092: *
093: * This is used when the index is fully rebuild, not for updating only some parts
094: * of an existing index.<p>
095: *
096: * @param writer the index writer to write the update to
097: * @param source the search index source to update
098: * @param threadManager the thread manager to use when extracting the document text
099: *
100: * @throws CmsIndexException if something goes wrong
101: */
102: void rebuildIndex(IndexWriter writer,
103: CmsIndexingThreadManager threadManager,
104: CmsSearchIndexSource source) throws CmsIndexException;
105:
106: /**
107: * Incremental index update - create a new index entry for all resources in the given list.<p>
108: *
109: * @param writer the index writer to write the update to
110: * @param resourcesToUpdate a list of <code>{@link org.opencms.db.CmsPublishedResource}</code> instances that must be updated
111: * @param threadManager the thread manager to use when extracting the document text
112: *
113: * @throws CmsIndexException if something goes wrong
114: */
115: void updateResources(IndexWriter writer,
116: CmsIndexingThreadManager threadManager,
117: List resourcesToUpdate) throws CmsIndexException;
118: }
|