Beispiel #1
0
        public DateFacetingResult ParseDateFacetingNode(XElement node)
        {
            var r          = new DateFacetingResult();
            var dateParser = new DateTimeFieldParser();
            var intParser  = new IntFieldParser();

            foreach (var dateFacetingNode in node.Elements())
            {
                var name = dateFacetingNode.Attribute("name").Value;
                switch (name)
                {
                case "gap":
                    r.Gap = dateFacetingNode.Value;
                    break;

                case "end":
                    r.End = (DateTime)dateParser.Parse(dateFacetingNode, typeof(DateTime));
                    break;

                default:
                    // Temp fix to support Solr 3.1, which has added a new element <date name="start">...</date>
                    // not seen in Solr 1.4 to the facet date response – just ignore this element.
                    if (dateFacetingNode.Name != "int")
                    {
                        break;
                    }

                    var count = (int)intParser.Parse(dateFacetingNode, typeof(int));
                    if (name == FacetDateOther.After.ToString())
                    {
                        r.OtherResults[FacetDateOther.After] = count;
                    }
                    else if (name == FacetDateOther.Before.ToString())
                    {
                        r.OtherResults[FacetDateOther.Before] = count;
                    }
                    else if (name == FacetDateOther.Between.ToString())
                    {
                        r.OtherResults[FacetDateOther.Between] = count;
                    }
                    else
                    {
                        var d = dateParser.ParseDate(name);
                        r.DateResults.Add(KV(d, count));
                    }
                    break;
                }
            }
            return(r);
        }
Beispiel #2
0
        public DateFacetingResult ParseDateFacetingNode(XElement node)
        {
            var r          = new DateFacetingResult();
            var dateParser = new DateTimeFieldParser();
            var intParser  = new IntFieldParser();

            foreach (var dateFacetingNode in node.Elements())
            {
                var name = dateFacetingNode.Attribute("name").Value;
                switch (name)
                {
                case "gap":
                    r.Gap = dateFacetingNode.Value;
                    break;

                case "end":
                    r.End = (DateTime)dateParser.Parse(dateFacetingNode, typeof(DateTime));
                    break;

                default:
                    var count = (int)intParser.Parse(dateFacetingNode, typeof(int));
                    if (name == FacetDateOther.After.ToString())
                    {
                        r.OtherResults[FacetDateOther.After] = count;
                    }
                    else if (name == FacetDateOther.Before.ToString())
                    {
                        r.OtherResults[FacetDateOther.Before] = count;
                    }
                    else if (name == FacetDateOther.Between.ToString())
                    {
                        r.OtherResults[FacetDateOther.Between] = count;
                    }
                    else
                    {
                        var d = dateParser.ParseDate(name);
                        r.DateResults.Add(KV(d, count));
                    }
                    break;
                }
            }
            return(r);
        }