package com.salesmanager.core.business.services.search;
import com.salesmanager.core.business.exception.ServiceException;
import com.salesmanager.core.model.catalog.product.Product;
import com.salesmanager.core.model.merchant.MerchantStore;
import com.salesmanager.core.model.search.SearchKeywords;
import com.salesmanager.core.model.search.SearchResponse;
public interface SearchService {
/**
* The indexing service for products. The index service must be invoked when a product is
* created or updated
* @param store
* @param product
* @throws ServiceException
*/
void index(MerchantStore store, Product product) throws ServiceException;
/**
* Deletes an index in the appropriate language. Must be invoked when a product is deleted
* @param store
* @param product
* @throws ServiceException
*/
void deleteIndex(MerchantStore store, Product product)
throws ServiceException;
/**
* Similar keywords based on a a series of characters. Used in the auto-complete
* functionality
* @param collectionName
* @param jsonString
* @param entriesCount
* @return
* @throws ServiceException
*/
SearchKeywords searchForKeywords(String collectionName,
String jsonString, int entriesCount) throws ServiceException;
/**
* Search products based on user entry
* @param store
* @param languageCode
* @param jsonString
* @param entriesCount
* @param startIndex
* @throws ServiceException
*/
SearchResponse search(MerchantStore store, String languageCode, String jsonString,
int entriesCount, int startIndex) throws ServiceException;
/**
* Initializes search service in order to avoid lazy initialization
*/
void initService();
}