public RangeFacetingResult ParseRangeFacetingNode(XElement node) { var r = new RangeFacetingResult(); var intParser = new IntFieldParser(); foreach (var rangeFacetingNode in node.Elements()) { var name = rangeFacetingNode.Attribute("name").Value; switch (name) { case "gap": r.Gap = rangeFacetingNode.Value; break; case "start": r.Start = rangeFacetingNode.Value; break; case "end": r.End = rangeFacetingNode.Value; break; case "counts": foreach (var item in rangeFacetingNode.Elements()) { r.RangeResults.Add(KV.Create(item.Attribute("name").Value, (int)intParser.Parse(item, typeof(int)))); } break; default: //collect FacetRangeOther items if (rangeFacetingNode.Name != "int") { break; } var count = (int)intParser.Parse(rangeFacetingNode, typeof(int)); if (name == FacetDateOther.After.ToString()) { r.OtherResults[FacetRangeOther.After] = count; } else if (name == FacetDateOther.Before.ToString()) { r.OtherResults[FacetRangeOther.Before] = count; } else if (name == FacetDateOther.Between.ToString()) { r.OtherResults[FacetRangeOther.Between] = count; } break; } } return(r); }
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); }
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); }