package com.warmer.web.service;

import com.warmer.base.service.KeywordExtractionService;
import com.warmer.web.request.GraphQuery;

import java.util.*;

/**
 * 智能搜索服务接口
 * 
 * @author tanc
 */
public interface IntelligentSearchService {
    
    /**
     * 智能搜索 - 基于文本直接搜索知识图谱
     * 
     * @param text 输入文本
     * @param domain 搜索领域
     * @return 搜索结果
     */
    Map<String, Object> intelligentSearch(String text, String domain);
    
    /**
     * 根据关键词搜索节点
     * 
     * @param keyword 关键词
     * @param domain 搜索领域
     * @return 搜索结果
     */
    Map<String, Object> searchNodesByKeyword(String keyword, String domain);
    
    /**
     * 创建空的搜索结果
     * 
     * @return 空的搜索结果
     */
    Map<String, Object> createEmptySearchResult();
    
    /**
     * 去除重复的节点
     * 
     * @param nodes 节点列表
     * @return 去重后的节点列表
     */
    List<Map<String, Object>> removeDuplicateNodes(List<Map<String, Object>> nodes);
    
    /**
     * 去除重复的关系
     * 
     * @param relations 关系列表
     * @return 去重后的关系列表
     */
    List<Map<String, Object>> removeDuplicateRelations(List<Map<String, Object>> relations);
    
    /**
     * 处理智能搜索请求
     * 
     * @param query 搜索请求
     * @return 处理后的搜索请求
     */
    GraphQuery processIntelligentSearch(GraphQuery query);
    
    /**
     * 获取关键字提取结果（用于前端显示）
     * 
     * @param text 原始文本
     * @return 关键字信息列表
     */
    List<KeywordExtractionService.KeywordInfo> getKeywordExtractionResult(String text);
    
    /**
     * 获取关键词提取结果
     * 
     * @param text 输入文本
     * @return 关键词提取结果
     */
    List<KeywordExtractionService.KeywordInfo> getKeywordExtractionResultMap(String text);
    
    /**
     * 获取搜索建议
     * 
     * @param query 查询关键词
     * @param domain 领域名称
     * @return 节点名称建议列表
     */
    List<String> getSearchSuggestions(String query, String domain);
    
    /**
     * 提取关键词（简单版本）
     * 
     * @param text 原始文本
     * @return 关键词列表
     */
    List<String> extractKeywords(String text);
}