/*
 * FullTextSearch
 * 全文検索アプリケーション
 */
package org.logical_paradox.fts.summary;

import org.logical_paradox.fts.FullTextSearchProperty;
import org.logical_paradox.fts.ParsedKeyLocation;
import org.logical_paradox.fts.SearchResult;
import org.logical_paradox.fts.document.DocumentManager;

/**
 * サマリー作成のインターフェース
 */
public abstract class SummaryGenerator {
	protected DocumentManager documentManager;

	/**
	 * コンストラクタ
	 */
	public SummaryGenerator() throws Exception {
		documentManager = getDocumentManager();
	}
	/**
	 * 文書データアクセサを生成する
	 * @return 生成された文書データアクセサ
	 */
	protected DocumentManager getDocumentManager() throws Exception {
		String documentManagerClass = System.getProperty("FTS_DOCUMENT_MANAGER_PROPERTY");
		if(documentManagerClass == null || documentManagerClass.trim().length() == 0) {
			documentManagerClass = FullTextSearchProperty.FTS_DOCUMENT_MANAGER_NAME;
		}
		return (DocumentManager)Class.forName(documentManagerClass).newInstance();
	}
	/**
	 * 位置情報からサマリーを作成して，結果として返す
	 * 
	 * @param locations[] - 位置情報
	 * @param founddic - 検索語が共通して存在している文書番号
	 * @return 検索結果(サマリー)
	 */
	public abstract SearchResult[] getSummary(ParsedKeyLocation[] locations, long founddic);
}
