public decimal GetCalculatedField(string query, eFunctionMode function, string SelectedFieldMetadataSet, string SelectedField, string SelectedGroupByFieldMetadataSet, string SelectedGroupByField, string languageCode = "en") { string metadataGuid = SelectedFieldMetadataSet.Replace('-', '_'); string fieldGuid = SelectedField.Replace('-', '_'); bool isOptionField = false; string resultType = "ds"; //TODO: check the field type. At the moment, we can only do stats on number fields. if (!string.IsNullOrEmpty(SelectedFieldMetadataSet) && !string.IsNullOrEmpty(SelectedField)) { isOptionField = IsOptionField(SelectedFieldMetadataSet, SelectedField) ? true : false; resultType = IsNumberField(SelectedFieldMetadataSet, SelectedField) ? "ds" : "txts_" + languageCode; } string fieldString = string.Format("value_{0}_{1}_{2}", metadataGuid, fieldGuid, resultType); //adding group by string groupByFieldString = string.Empty; if (!string.IsNullOrEmpty(SelectedGroupByFieldMetadataSet) && !string.IsNullOrEmpty(SelectedGroupByField)) { string groupByMetadataGuid = string.IsNullOrEmpty(SelectedGroupByFieldMetadataSet) ? string.Empty : SelectedGroupByFieldMetadataSet.Replace('-', '_'); string groupByFieldGuid = string.IsNullOrEmpty(SelectedGroupByField) ? string.Empty : SelectedGroupByField.Replace('-', '_'); resultType = IsNumberField(SelectedGroupByFieldMetadataSet, SelectedGroupByField) ? "ds" : languageCode + "_ss"; // This last bit is for full text groups. isOptionField = IsOptionField(SelectedGroupByFieldMetadataSet, SelectedGroupByField) ? true : false; groupByFieldString = string.Format("value_{0}_{1}_{2}", groupByMetadataGuid, groupByFieldGuid, resultType); } switch (function) { case eFunctionMode.SUM: return(SolrSrv.SumField(fieldString, query)); case eFunctionMode.COUNT: return(SolrSrv.CountField(fieldString, query, groupByFieldString)); case eFunctionMode.MEAN: return(SolrSrv.MeanField(fieldString, query)); case eFunctionMode.MAX: return(SolrSrv.MaxField(fieldString, query)); case eFunctionMode.MIN: return(SolrSrv.MinField(fieldString, query)); case eFunctionMode.STANDARD_DEVIATION: return(SolrSrv.StandardDeviationField(fieldString, query)); case eFunctionMode.MEDIAN: return(SolrSrv.MedianField(fieldString, query)); } return(-1m); }
public List <GroupByObject> GetGroupData(string q, string xMetadataSet, string xField, string yMetadataSet, string yField, string grpMetadataSet, string grpField, string languageCode = "en") { string xIndexId = GetGraphFieldString(xMetadataSet, xField, languageCode, false); string yIndexId = GetGraphFieldString(yMetadataSet, yField, languageCode, true); string catIndexId = string.IsNullOrEmpty(grpField) ? null : GetGraphFieldString(grpMetadataSet, grpField, languageCode); string solrResult = SolrSrv.GetGraphData(q, xIndexId, yIndexId, catIndexId, 50000);//xindex == catIndex -- if the catIndex is null sol don't return the 2nd grouping //forexample 1st group by "Year", 2nd group by "Recipient" //yIndexId -- is the field that can be sum() -- number field //50000 -- limit item searched returned List <GroupByObject> results = ConvertSolrXml2(solrResult).ToList(); return(results); }
public IEnumerable <GraphQueryObject> GetGraphData(string q, string xMetadataSet, string xField, string yMetadataSet, string yField, string catMetadataSet, string catField, string languageCode = "en") { string xIndexId = GetGraphFieldString(xMetadataSet, xField, languageCode, false); string yIndexId = GetGraphFieldString(yMetadataSet, yField, languageCode, true); string catIndexId = string.IsNullOrEmpty(catField) ? null : GetGraphFieldString(catMetadataSet, catField, languageCode); string result = SolrSrv.GetGraphData(q, xIndexId, yIndexId, catIndexId); if (string.IsNullOrEmpty(result)) { return(null); } IDictionary <string, string> categories = null; if (catIndexId != null) { categories = SolrSrv.GetSolrCategories(q, catIndexId, 0); } return(ConvertSolrXml(result, categories)); }