public string TagSearchSmart(TagSearchFilter filter) { try { var xml = new XElement("taglist"); var count = LuceneNetUtil.TagSearch(filter, EpgIndexNode.NameField, Searcher.SegmentKeyWord(filter.k), xml); xml.AddFirst(new XElement("count", count), new XElement("page_count", PageUtils.PageCount(count, filter.c))); return xml.ToString(SaveOptions.DisableFormatting); } catch (KeyNotFoundException) { return NoPlatForm(); } catch (Exception ex) { return BoxUtils.FormatErrorMsg(ex); } }
/// <summary> /// Tag搜索 /// </summary> public static int TagSearch(TagSearchFilter filter, string[] fields, string query, XElement root) { var containfilters = new List<ContainFilterNode>(); var pindx = VideoNodeKeyArray.Instance.Items[new VideoNodeKey(filter.platform, 0, filter.auth)].ToString(); containfilters.Add(new ContainFilterNode() { FieldName = EpgIndexNode.Flags, Text = filter.dimension }); containfilters.Add(new ContainFilterNode() { FieldName = EpgIndexNode.PlatformIndex, Text = pindx }); //var fbname = string.Empty; //if (filter.forbidden) //{ // if (ForbiddenAreaCache.Instance.Items.ContainsKey(filter.fbcode)) // { // fbname = ForbiddenAreaCache.Instance.Items[filter.fbcode].ForbiddenAreaName; // } // else // { // filter.forbidden = false; // } //} //if (filter.forbidden) //{ // containfilters.Add(new ContainFilterNode() { FieldName = string.Format("{0}{1}", EpgIndexNode.ForbiddenCode, pindx), Text = fbname.ToLower() }); //} var node = new SearchNode(); if (filter.lang == CustomArray.LanguageArray[1]) node.IsNoPaging = true; node.Key = filter.k; node.Pindex = pindx; node.Queries = query; node.Fields = fields; node.Occurs = EpgIndexNode.NameOccurs; node.Start = filter.s; node.Limit = filter.c; node.ContainFilters = containfilters; node.IndexValue = EpgIndexNode.IndexValue; return Searcher.DistinctSearch(TagLuceneNet.Instance.IndexDic, node, root); }