001: /**
002: * Copyright (C) 2001 Yasna.com. All rights reserved.
003: *
004: * ===================================================================
005: * The Apache Software License, Version 1.1
006: *
007: * Redistribution and use in source and binary forms, with or without
008: * modification, are permitted provided that the following conditions
009: * are met:
010: *
011: * 1. Redistributions of source code must retain the above copyright
012: * notice, this list of conditions and the following disclaimer.
013: *
014: * 2. Redistributions in binary form must reproduce the above copyright
015: * notice, this list of conditions and the following disclaimer in
016: * the documentation and/or other materials provided with the
017: * distribution.
018: *
019: * 3. The end-user documentation included with the redistribution,
020: * if any, must include the following acknowledgment:
021: * "This product includes software developed by
022: * Yasna.com (http://www.yasna.com)."
023: * Alternately, this acknowledgment may appear in the software itself,
024: * if and wherever such third-party acknowledgments normally appear.
025: *
026: * 4. The names "Yazd" and "Yasna.com" must not be used to
027: * endorse or promote products derived from this software without
028: * prior written permission. For written permission, please
029: * contact yazd@yasna.com.
030: *
031: * 5. Products derived from this software may not be called "Yazd",
032: * nor may "Yazd" appear in their name, without prior written
033: * permission of Yasna.com.
034: *
035: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
036: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
037: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
038: * DISCLAIMED. IN NO EVENT SHALL YASNA.COM OR
039: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
040: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
041: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
042: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
043: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
044: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
045: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
046: * SUCH DAMAGE.
047: * ====================================================================
048: *
049: * This software consists of voluntary contributions made by many
050: * individuals on behalf of Yasna.com. For more information
051: * on Yasna.com, please see <http://www.yasna.com>.
052: */
053:
054: /**
055: * Copyright (C) 2000 CoolServlets.com. All rights reserved.
056: *
057: * ===================================================================
058: * The Apache Software License, Version 1.1
059: *
060: * Redistribution and use in source and binary forms, with or without
061: * modification, are permitted provided that the following conditions
062: * are met:
063: *
064: * 1. Redistributions of source code must retain the above copyright
065: * notice, this list of conditions and the following disclaimer.
066: *
067: * 2. Redistributions in binary form must reproduce the above copyright
068: * notice, this list of conditions and the following disclaimer in
069: * the documentation and/or other materials provided with the
070: * distribution.
071: *
072: * 3. The end-user documentation included with the redistribution,
073: * if any, must include the following acknowledgment:
074: * "This product includes software developed by
075: * CoolServlets.com (http://www.coolservlets.com)."
076: * Alternately, this acknowledgment may appear in the software itself,
077: * if and wherever such third-party acknowledgments normally appear.
078: *
079: * 4. The names "Jive" and "CoolServlets.com" must not be used to
080: * endorse or promote products derived from this software without
081: * prior written permission. For written permission, please
082: * contact webmaster@coolservlets.com.
083: *
084: * 5. Products derived from this software may not be called "Jive",
085: * nor may "Jive" appear in their name, without prior written
086: * permission of CoolServlets.com.
087: *
088: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
089: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
090: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
091: * DISCLAIMED. IN NO EVENT SHALL COOLSERVLETS.COM OR
092: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
093: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
094: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
095: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
096: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
097: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
098: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
099: * SUCH DAMAGE.
100: * ====================================================================
101: *
102: * This software consists of voluntary contributions made by many
103: * individuals on behalf of CoolServlets.com. For more information
104: * on CoolServlets.com, please see <http://www.coolservlets.com>.
105: */package com.Yasna.forum;
106:
107: import java.util.Date;
108:
109: /**
110: * Defines properties of the Yazd indexer for searching. Indexing can either
111: * be done real-time by calling indexMessage() every time a new message is
112: * created, or by running the indexer in timed update mode. The latter mode
113: * is probably preferable since it allows for faster message posting.
114: * <p>
115: * The automated updating mode can be adjusted by setting how often batch
116: * indexing is done. You can adjust this interval to suit the needs of your
117: * forums. Frequent updates mean that messages will be searchable more quickly.
118: * Less frequent updates use fewer system resources.
119: *
120: * @see ForumFactory#getSearchIndexer()
121: */
122: public interface SearchIndexer {
123:
124: /**
125: * Returns the number of hours that the indexer waits between each update.
126: *
127: * @return the number of hours between automatic index updates.
128: */
129: public int getHoursUpdateInterval();
130:
131: /**
132: * Returns the number of minutes that the indexer waits between each update.
133: *
134: * @return the number of minutes between automatic index updates.
135: */
136: public int getMinutesUpdateInterval();
137:
138: /**
139: * Sets the amount of time that indexer should wait between updating the
140: * index.
141: *
142: * @param minutes the number of minutes between automatic index updates.
143: * @param hours the number of hours between automatic index updates.
144: */
145: public void setUpdateInterval(int minutes, int hours);
146:
147: /**
148: * Returns true if auto indexing is turned on. When auto indexing is on, it
149: * will update the search index at the interval specified by the
150: * setUpdateInterval method.
151: *
152: * @return true if auto indexing is turned on.
153: */
154: public boolean isAutoIndexEnabled();
155:
156: /**
157: * Enables or disables auto indexing. When auto indexing is on, it
158: * will update the search index at the interval specified by the
159: * setUpdateInterval method.
160: *
161: * @param value true to turn auto indexing on, false to turn it off.
162: */
163: public void setAutoIndexEnabled(boolean value);
164:
165: /**
166: * Returns the date that the last update to the index was made.
167: */
168: public Date getLastIndexedDate();
169:
170: /**
171: * Adds an individual message to the index. This method is useful for doing
172: * real-time indexing. However, for maximum posting speed this method can
173: * be ignored. In that case, the automatic indexer will pick up all new
174: * messages at the next index interval.
175: *
176: * @param message the message to add to the index.
177: */
178: public void addToIndex(ForumMessage message);
179:
180: /**
181: * Removes an individual message from the index.
182: *
183: * @param message the message to remove from the index.
184: */
185: public void removeFromIndex(ForumMessage message);
186:
187: /**
188: * Manually update the index to include all new messages since the last
189: * update.
190: */
191: public void updateIndex();
192:
193: /**
194: * Manually rebuild the entire index. This operation can be slow if the
195: * index is large.
196: */
197: public void rebuildIndex();
198: }
|