| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- namespace OASystem.API.OAMethodLib.GenericSearch
- {
- /// <summary>
- /// 动态搜索请求
- /// </summary>
- public class DynamicSearchRequest
- {
- /// <summary>
- /// 搜索关键词
- /// </summary>
- public string Keyword { get; set; }
- /// <summary>
- /// 字段权重配置(字段名:权重值)
- /// </summary>
- public Dictionary<string, int> FieldWeights { get; set; } = new Dictionary<string, int>();
- /// <summary>
- /// 返回字段列表(为空则返回所有字段)
- /// </summary>
- public List<string> ReturnFields { get; set; } = new List<string>();
- /// <summary>
- /// 过滤条件
- /// </summary>
- public List<SearchFilter> Filters { get; set; } = new List<SearchFilter>();
- /// <summary>
- /// 排序字段
- /// </summary>
- public string OrderBy { get; set; }
- /// <summary>
- /// 是否降序排序
- /// </summary>
- public bool IsDescending { get; set; } = true;
- /// <summary>
- /// 页码(从1开始)
- /// </summary>
- public int PageIndex { get; set; } = 1;
- /// <summary>
- /// 页大小
- /// </summary>
- public int PageSize { get; set; } = 20;
- }
- /// <summary>
- /// 搜索过滤器
- /// </summary>
- public class SearchFilter
- {
- /// <summary>
- /// 字段名
- /// </summary>
- public string Field { get; set; }
- /// <summary>
- /// 操作符(eq, neq, contains, startswith, endswith, gt, gte, lt, lte, in)
- /// </summary>
- public string Operator { get; set; }
- /// <summary>
- /// 字段值
- /// </summary>
- public object Value { get; set; }
- /// <summary>
- /// 字段值列表(用于IN操作)
- /// </summary>
- public List<object> Values { get; set; }
- }
- /// <summary>
- /// 匹配字段信息
- /// </summary>
- public class MatchFieldInfo
- {
- /// <summary>
- /// 字段名
- /// </summary>
- public string FieldName { get; set; }
- /// <summary>
- /// 字段值
- /// </summary>
- public string FieldValue { get; set; }
- /// <summary>
- /// 匹配分数
- /// </summary>
- public int Score { get; set; }
- /// <summary>
- /// 匹配原因
- /// </summary>
- public string MatchReason { get; set; }
- }
- /// <summary>
- /// 搜索结果项(包含匹配度分数)
- /// </summary>
- /// <typeparam name="T">实体类型</typeparam>
- public class SearchResultItem<T>
- {
- /// <summary>
- /// 实体数据
- /// </summary>
- public T Data { get; set; }
- /// <summary>
- /// 匹配度分数
- /// </summary>
- public int MatchScore { get; set; }
- /// <summary>
- /// 匹配字段信息
- /// </summary>
- public List<MatchFieldInfo> MatchFields { get; set; } = new List<MatchFieldInfo>();
- }
- /// <summary>
- /// 搜索结果(应用层统计匹配度)
- /// </summary>
- /// <typeparam name="T">实体类型</typeparam>
- public class SearchResult<T>
- {
- /// <summary>
- /// 是否成功
- /// </summary>
- public bool Success { get; set; } = true;
- /// <summary>
- /// 消息
- /// </summary>
- public string Message { get; set; } = "搜索成功";
- /// <summary>
- /// 数据列表(包含匹配度信息)
- /// </summary>
- public List<SearchResultItem<T>> Items { get; set; } = new List<SearchResultItem<T>>();
- /// <summary>
- /// 总记录数
- /// </summary>
- public int TotalCount { get; set; }
- /// <summary>
- /// 搜索关键词
- /// </summary>
- public string Keyword { get; set; }
- /// <summary>
- /// 使用的字段权重配置
- /// </summary>
- public Dictionary<string, int> FieldWeights { get; set; }
- /// <summary>
- /// 返回的字段列表
- /// </summary>
- public List<string> ReturnFields { get; set; }
- /// <summary>
- /// 页码
- /// </summary>
- public int PageIndex { get; set; }
- /// <summary>
- /// 页大小
- /// </summary>
- public int PageSize { get; set; }
- /// <summary>
- /// 响应时间(毫秒)
- /// </summary>
- public long ResponseTime { get; set; }
- /// <summary>
- /// 搜索ID(用于追踪)
- /// </summary>
- public string SearchId { get; set; }
- }
- /// <summary>
- /// 字段信息
- /// </summary>
- public class FieldInfo
- {
- /// <summary>
- /// 字段名
- /// </summary>
- public string FieldName { get; set; }
- /// <summary>
- /// 显示名称
- /// </summary>
- public string DisplayName { get; set; }
- /// <summary>
- /// 数据类型
- /// </summary>
- public string DataType { get; set; }
- /// <summary>
- /// 是否可搜索
- /// </summary>
- public bool IsSearchable { get; set; }
- /// <summary>
- /// 默认权重
- /// </summary>
- public int DefaultWeight { get; set; }
- /// <summary>
- /// 字段描述
- /// </summary>
- public string Description { get; set; }
- /// <summary>
- /// 是否可过滤
- /// </summary>
- public bool CanFilter { get; set; } = true;
- /// <summary>
- /// 是否可排序
- /// </summary>
- public bool CanSort { get; set; } = true;
- }
- /// <summary>
- /// 搜索分析结果
- /// </summary>
- public class SearchAnalysis
- {
- /// <summary>
- /// 原始关键词
- /// </summary>
- public string OriginalKeyword { get; set; }
- /// <summary>
- /// 是否有特殊符号
- /// </summary>
- public bool HasSpecialSymbols { get; set; }
- /// <summary>
- /// 符号分割的段
- /// </summary>
- public List<string> SymbolSegments { get; set; } = new List<string>();
- /// <summary>
- /// 是否是单字
- /// </summary>
- public bool IsSingleChar { get; set; }
- /// <summary>
- /// 单字列表
- /// </summary>
- public List<char> SingleChars { get; set; } = new List<char>();
- /// <summary>
- /// 是否有搜索内容
- /// </summary>
- public bool HasSearchContent => HasSpecialSymbols || IsSingleChar;
- }
- }
|