package com.storlead.es.internal;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.storlead.framework.common.dto.page.PageDTO;

import java.util.List;
import java.util.Map;

public interface BaseSearchService<T> {

    /**
     * 搜 索
     *
     * @param keyword
     * @param clazz
     * @return
     */
    List<T> query(Class<T> clazz, String keyword, String indexName);

    /**
     * 分页搜索
     *
     * @param keyword
     * @param clazz
     * @return
     */
    IPage<T> queryPage(Class<T> clazz, String keyword, PageDTO page, String indexName);


    IPage<T> queryHitPage(Class<T> clazz, String keyword, PageDTO page, String... hightFields);

    /**
     * 搜索高亮显示
     *
     * @param keyword    关键字
     * @param indexName  索引库
     * @param fieldNames 搜索的字段
     * @return
     */
    List<T> queryHit(Class<T> clazz, String keyword, String indexName, String... fieldNames);

    List<T> queryHitByPage(Class<T> clazz, PageDTO page, String keyword, String indexName, String... fieldNames);

    List<T> queryHit(Class<T> clazz, String keyword, String fieldName, String indexName);

    List<T> queryHitByPage(Class<T> clazz, PageDTO page, String keyword, String fieldName, String indexName);

    List<T> querySimilarityPage(Class<T> clazz, PageDTO page, String keyword, String indexName, String... fieldNames);

    List<Map<String, Object>> searchByNameSimilarity(String inputName);
}
