/*
 * $Id: IndexAccessor.java,v 1.4 2005/05/31 14:38:19 rampil Exp $
 * Copyright (c) 2004 LOGICAL-PARADOX.ORG
 */
package org.logical_paradox.koike.core.indexer;

import org.logical_paradox.koike.core.parser.Term;
import org.logical_paradox.koike.core.search.KoikeIndexResultSet;

/**
 * インデックスアクセスのためのインターフェース
 * 
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.4 $
 */
public interface IndexAccessor {
	/**
	 * インデックスへの接続が閉じているかどうかを返す
	 * @return true:閉じている / false:開いている
	 */
	public boolean isClosed();
	/**
	 * インデックスへの接続を閉じる
	 * @throws IndexAccessException 閉じるのに失敗した
	 */
	public void close() throws IndexAccessException;
	/**
	 * 新しいキーとオブジェクトをインデックスに追加する
	 * @param digest 文書を特定するためのダイジェスト
	 * @param term 索引語と位置情報の配列
	 * @throws IndexAccessException 追加処理に失敗した
	 */
	public void addTerm(String digest, Term[] term) throws IndexAccessException;
	/**
	 * 指定されたキーとキーに対応するオブジェクトを削除する
	 * @param key キー
	 * @return 削除されたオブジェクト
	 * @throws IndexAccessException 削除処理に失敗した
	 */
	public Object removeTerm(String key) throws IndexAccessException;
	/**
	 * 指定されたキーに関連付けされているオブジェクトを取得する
	 * @param key キー
	 * @return 関連付けされているキーとオブジェクトのペア
	 * @throws IndexAccessException 検索に失敗した
	 */
	public KoikeIndexResultSet getValue(String key) throws IndexAccessException;
}

// end of IndexAccessor.java
