Package prefuse.data.search

Source Code of prefuse.data.search.SearchTupleSet

package prefuse.data.search;

import java.util.Iterator;

import prefuse.data.Tuple;
import prefuse.data.tuple.DefaultTupleSet;

/**
* <p>Abstract base class for TupleSet implementations that support text
* search. These sets provide search engine functionality -- Tuple data fields
* can be indexed and then searched over using text queries, the results of
* which populate the TupleSet. A range of search techniques are provided by
* subclasses of this class.</p>
*
* <p>
* <b>NOTE:</b> The {@link #addTuple(Tuple)} and
* {@link #removeTuple(Tuple)}, methods are not supported by this
* implementation or its derived classes. Calling these methods will result
* in thrown exceptions. Instead, membership is determined by the search
* matches found using the {@link #search(String) search} method, which
* searches over the terms indexed using the {@link #index(Iterator, String)}
* and {@link #index(Tuple, String)} methods.
* </p>
*
* @author <a href="http://jheer.org">jeffrey heer</a>
* @see prefuse.data.query.SearchQueryBinding
*/
public abstract class SearchTupleSet extends DefaultTupleSet {
   
    /**
     * Returns the current search query, if any.
     * @return the currently active search query
     */
    public abstract String getQuery();
   
    /**
     * Searches the indexed fields of this TupleSet for matching
     * strings, adding the Tuple instances for each search match
     * to the TupleSet. The details of how the query is matched to
     * indexed fields is left to subclasses.
     * @param query the query string to search for. Indexed fields
     *  with matching text will be added to the TupleSet.
     */
    public abstract void search(String query);
   
    /**
     * Indexes the data values for the given field name for
     * each Tuple in the provided Iterator. These values are used
     * to construct an internal data structure allowing fast searches
     * over these attributes. To index multiple fields, simply call
     * this method multiple times with the desired field names.
     * @param tuples an Iterator over Tuple instances to index
     * @param field the name of the attribute to index
     * @throws ClassCastException is a non-Tuple instance is
     * encountered in the iteration.
     */
    public void index(Iterator tuples, String field) {
        while ( tuples.hasNext() ) {
            Tuple t = (Tuple)tuples.next();
            index(t, field);
        }
    }
   
    /**
     * Index an individual Tuple field, so that it can be searched for.
     * @param t the Tuple
     * @param field the data field to index
     */
    public abstract void index(Tuple t, String field);

    /**
     * Un-index an individual Tuple field, so that it can no longer be
     * searched for.
     * @param t the Tuple
     * @param field the data field to unindex
     * @see #isUnindexSupported()
     */
    public abstract void unindex(Tuple t, String field);
   
    /**
     * Indicates if this TupleSearchSet supports the unindex operation.
     * @return true if unindex is supported, false otherwise.
     * @see #unindex(Tuple, String)
     */
    public abstract boolean isUnindexSupported();
   
    // ------------------------------------------------------------------------
    // Unsupported Operations
   
    /**
     * This method is not supported by this implementation. Don't call it!
     * Instead, use the {@link #search(String) search} or
     * {@link #clear() clear} methods.
     */
    public Tuple addTuple(Tuple t) {
        throw new UnsupportedOperationException();
    }
    /**
     * This method is not supported by this implementation. Don't call it!
     * Instead, use the {@link #search(String) search} or
     * {@link #clear() clear} methods.
     */
    public boolean removeTuple(Tuple t) {
        throw new UnsupportedOperationException();
    }
   
} // end of abstract class SearchTupleSet
TOP

Related Classes of prefuse.data.search.SearchTupleSet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.