001: package org.tigris.scarab.util.word;
002:
003: /* ================================================================
004: * Copyright (c) 2001 Collab.Net. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions are
008: * met:
009: *
010: * 1. Redistributions of source code must retain the above copyright
011: * notice, this list of conditions and the following disclaimer.
012: *
013: * 2. Redistributions in binary form must reproduce the above copyright
014: * notice, this list of conditions and the following disclaimer in the
015: * documentation and/or other materials provided with the distribution.
016: *
017: * 3. The end-user documentation included with the redistribution, if
018: * any, must include the following acknowlegement: "This product includes
019: * software developed by Collab.Net <http://www.Collab.Net/>."
020: * Alternately, this acknowlegement may appear in the software itself, if
021: * and wherever such third-party acknowlegements normally appear.
022: *
023: * 4. The hosted project names must not be used to endorse or promote
024: * products derived from this software without prior written
025: * permission. For written permission, please contact info@collab.net.
026: *
027: * 5. Products derived from this software may not use the "Tigris" or
028: * "Scarab" names nor may "Tigris" or "Scarab" appear in their names without
029: * prior written permission of Collab.Net.
030: *
031: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
032: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
033: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
034: * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
035: * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
036: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
037: * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
038: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
039: * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
040: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
041: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
042: *
043: * ====================================================================
044: *
045: * This software consists of voluntary contributions made by many
046: * individuals on behalf of Collab.Net.
047: */
048:
049: // JDK classes
050: // Scarab classes
051: import org.tigris.scarab.om.AttributeValue;
052: import org.tigris.scarab.om.Attachment;
053:
054: /**
055: * Support for searching/indexing text
056: *
057: * @author <a href="mailto:jmcnally@collab.net">John McNally</a>
058: * @version $Id: SearchIndex.java 9381 2005-01-09 15:28:09Z dabbous $
059: */
060: public interface SearchIndex {
061: String PARSE_ERROR = "Search engine could not parse the query: ";
062: String INDEX_PATH = "path";
063: String VALUE_ID = "valid";
064: String ISSUE_ID = "issid";
065: String ATTRIBUTE_ID = "attid";
066: String ATTACHMENT_ID = "atchid";
067: String ATTACHMENT_TYPE_ID = "atchtypeid";
068: String TEXT = "text";
069: Long[] EMPTY_LIST = new Long[0];
070:
071: /**
072: * Specify search criteria. This is incremental.
073: */
074: void addQuery(Integer[] attributeIds, String text) throws Exception;
075:
076: /**
077: * Specify search criteria for attachments
078: */
079: void addAttachmentQuery(Integer[] ids, String text)
080: throws Exception;
081:
082: /**
083: * returns a list of related issue IDs sorted by relevance descending.
084: * Should return an empty/length=0 array if search returns no results.
085: */
086: Long[] getRelatedIssues() throws Exception;
087:
088: /**
089: * returns a list of related issue IDs sorted by relevance descending.
090: * Should return an empty/length=0 array if search returns no results.
091: * if(mergeResults==false) performs an implicit AND on internal partial queries.
092: * if(mergeResults==true) performs an implicit OR on internal partial queries.
093: * The method getRelatedIssue() is equivalent to getRelatedIssues(false);
094: */
095: Long[] getRelatedIssues(boolean mergeResults) throws Exception;
096:
097: /**
098: * Store index information for an AttributeValue
099: */
100: void index(AttributeValue attributeValue) throws Exception;
101:
102: /**
103: * Store index information for an Attachment
104: */
105: void index(Attachment attachment) throws Exception;
106:
107: /**
108: * update the index for all entities that currently exist
109: */
110: void updateIndex() throws Exception;
111:
112: /**
113: * Prepares the instance for reuse.
114: *
115: */
116: void clear();
117: }
|