Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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));
        }