public IWhere Contains(IFullTextSearchCondition searchcondition, string language, params string[] columnlist) { if (!string.IsNullOrEmpty(language)) { this.sql.AppendFormat(" CONTAINS({0},{1},LANGUAGE N'{2}')", Utility.GetListAsString<string>(columnlist.ToList(), ","), searchcondition.ToString(), language); } else { this.sql.AppendFormat(" CONTAINS({0},{1})", Utility.GetListAsString<string>(columnlist.ToList(), ","), searchcondition.ToString()); } return this; }
public IWhere Contains(IFullTextSearchCondition searchcondition, string language, params string[] columnlist) { if (!string.IsNullOrEmpty(language)) { this.sql.AppendFormat(" CONTAINS({0},{1},LANGUAGE N'{2}')", Utility.GetListAsString <string>(columnlist.ToList(), ","), searchcondition.ToString(), language); } else { this.sql.AppendFormat(" CONTAINS({0},{1})", Utility.GetListAsString <string>(columnlist.ToList(), ","), searchcondition.ToString()); } return(this); }
public IFrom ContainsTable(string tableName, IFullTextSearchCondition searchcondition, string language, int top_n_byrank, params string[] columnList) { this.sql.AppendFormat(" CONTAINSTABLE({0},{1},'{2}', LANGUAGE N'{3}',{4})", tableName, Utility.GetListAsString <string>(columnList.ToList(), ","), searchcondition.ToString(), language, top_n_byrank); return(this); }
public IFrom ContainsTable(string tableName, IFullTextSearchCondition searchcondition, params string[] columnList) { this.sql.AppendFormat(" CONTAINSTABLE({0},{1},{2})", tableName, Utility.GetListAsString <string>(columnList.ToList(), ","), searchcondition.ToString()); return(this); }
public string Contains(IFullTextSearchCondition searchcondition, string language, params string[] columnlist) { return(string.Format(" CONTAINS({0},{1},LANGUAGE N'{2}')", Utility.GetListAsString <string>(columnlist.ToList(), ","), searchcondition.ToString(), language)); }
public IWhere FreeText(IFullTextSearchCondition searchterm, params string[] columnlist) { this.sql.AppendFormat(" FREETEXT({0},'{1}')", Utility.GetListAsString <string>(columnlist.ToList(), ","), searchterm.ToString()); return(this); }
public IFrom ContainsTable(string tableName, IFullTextSearchCondition searchcondition, string language, int top_n_byrank, params string[] columnList) { this.sql.AppendFormat(" CONTAINSTABLE({0},{1},'{2}', LANGUAGE N'{3}',{4})", tableName, Utility.GetListAsString<string>(columnList.ToList(), ","), searchcondition.ToString(), language, top_n_byrank); return this; }
public IFrom ContainsTable(string tableName, IFullTextSearchCondition searchcondition, params string[] columnList) { this.sql.AppendFormat(" CONTAINSTABLE({0},{1},{2})", tableName, Utility.GetListAsString<string>(columnList.ToList(), ","), searchcondition.ToString()); return this; }
public string Contains(IFullTextSearchCondition searchcondition, string language, params string[] columnlist) { return string.Format(" CONTAINS({0},{1},LANGUAGE N'{2}')", Utility.GetListAsString<string>(columnlist.ToList(), ","), searchcondition.ToString(), language); }
public IWhere FreeText(IFullTextSearchCondition searchterm, params string[] columnlist) { this.sql.AppendFormat(" FREETEXT({0},'{1}')", Utility.GetListAsString<string>(columnlist.ToList(), ","), searchterm.ToString()); return this; }
/// <summary> /// 全文检索 /// </summary> /// <typeparam name="T">查询模型类型</typeparam> /// <param name="condition">查询条件</param> /// <returns></returns> public IEnumerable <T> FullTextSearch <T>(IFullTextSearchCondition <T> condition) where T : SearchEntityBase { var indexMappingName = IndexNameHelper.GetIndexMappingName(SetupConfig.SetupConfig.ServiceSign, condition.Index); var status = this.CacheClient.GetCache <IndexOperateStatus>(indexMappingName); this.IndexOperate.CkeckIndexStatus <T>(status, indexMappingName); if (condition.SearchFields == null || condition.SearchFields.Length == 0) { throw new ElasticsearchException("全文检索失败:查询字段不能为空"); } var searchRequest = new SearchRequest <T>(indexMappingName); searchRequest.Size = condition.SizeNumber; searchRequest.From = condition.SkipNumber; var boolQuery = new BoolQuery(); List <QueryContainer> queryContainers = new List <QueryContainer>(); if (condition.SearchFields.Length > 1) { queryContainers.Add(new MultiMatchQuery { Fields = condition.SearchFields, Query = condition.SearchValue }); } else { queryContainers.Add(new MatchQuery { Field = condition.SearchFields[0], Query = condition.SearchValue }); } boolQuery.Must = queryContainers; if (condition.FilterPredicate != null) { boolQuery.Filter = new List <QueryContainer> { condition.FilterPredicate.GetQuery() }; } searchRequest.Query = boolQuery; if (condition.Sort != null && condition.Sort.Count() > 0) { searchRequest.Sort = condition.Sort.Select(x => (ISort) new SortField { Field = x.Field, Order = x.isAsc ? SortOrder.Ascending : SortOrder.Descending }).ToList(); } var highlight = new Highlight(); var dic = new Dictionary <Field, IHighlightField>(); foreach (var field in condition.SearchFields) { dic.Add(field, new HighlightField()); } highlight.Fields = dic; searchRequest.Highlight = highlight; var response = Client.Search <T>(searchRequest); if (!response.IsValid) { throw new ElasticsearchException("全文检索失败:" + response.OriginalException.Message); } if (condition.IsHighLight) { return(response.Hits.Select(x => this.SetHightValue(x.Source, x.Highlights))); } return(response.Hits.Select(x => x.Source)); }