package info.bukova.isspst.services.fulltext;

import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;

import java.util.List;

/**
 * @author Pepa Rokos
 * 
 * Rozhraní služby fulltextového vyhledávání
 *
 */
public interface FullTextService {
	
	/**
	 * Přegeneruje fulltextový index.
	 */
	public void reindex();
	
	
	/**
	 * Vyhledává entity zadané třídy. Třída entity musí být anotovaná {@link Indexed}
	 * 
	 * @param entityClass třída entity k vyhledání
	 * @param fields property entity kde se bude vyhledávat. Musí být anotované {@link Field}
	 * @param word vyhledávaný výraz
	 * @return list odpovídajících entit
	 */
	public List<?> search(Class<?> entityClass, String[] fields, String word);
	
	
	/**
	 * Globální vyhledávání ve všech entitách, jejichš třídy jsou anotované {@link Indexed} a 
	 * property {@link Field}
	 * 
	 * @param word vyhledávaný výraz
	 * @return list odpovídajících entit
	 */
	public List<?> globalSearch(String word);

}
