/// <summary> /// Creates an RSS Item /// </summary> /// <param name="SearchItem"></param> /// <returns></returns> /// <remarks></remarks> private GenericRssElement GetRssItem(SearchResultsInfo SearchItem) { var item = new GenericRssElement(); string URL = Globals.NavigateURL(SearchItem.TabId); if (URL.ToLower().IndexOf(HttpContext.Current.Request.Url.Host.ToLower()) == -1) { URL = Globals.AddHTTP(HttpContext.Current.Request.Url.Host) + URL; } item["title"] = SearchItem.Title; item["description"] = SearchItem.Description; //TODO: JMB: We need to figure out how to persist the dc prefix in the XML output. See the Render method below. //item("dc:creator") = SearchItem.AuthorName item["pubDate"] = SearchItem.PubDate.ToUniversalTime().ToString("r"); if (!string.IsNullOrEmpty(SearchItem.Guid)) { if (URL.Contains("?")) { URL += "&" + SearchItem.Guid; } else { URL += "?" + SearchItem.Guid; } } item["link"] = URL; item["guid"] = URL; return(item); }
/// <summary> /// Builds RSS Item /// </summary> /// <returns></returns> /// <remarks> /// ---Corrected pubDate elment name. /// ---Corrected formatting of pubDate value to RFC-822 spec. /// ---Correction for guid element '&' replaced with '?' to correct linkage issues. /// </remarks> /// <history>Sat, 29 Jan 2005 Phil Guerra /// </history> private string BuildItem(SearchResultsInfo objResult, int Indent) { StringBuilder sb = new StringBuilder(1024); string URL = Globals.NavigateURL(objResult.TabId); if (URL.IndexOf(Request.Url.Host) == -1) { URL = Globals.AddHTTP(Request.Url.Host) + URL; } sb.Append(WriteElement("item", Indent)); sb.Append(WriteElement("title", objResult.Title, Indent + 1)); sb.Append(WriteElement("description", objResult.Description, Indent + 1)); sb.Append(WriteElement("link", URL, Indent + 1)); sb.Append(WriteElement("dc:creator", objResult.AuthorName, Indent + 1)); // Commented out <author> element - RSSv2.0 specs call for an email used here, // not just a simple name. // sb.Append(WriteElement("author", objResult.AuthorName, Indent + 1)) sb.Append(WriteElement("pubDate", objResult.PubDate.ToUniversalTime().ToString("r"), Indent + 1)); sb.Append(WriteElement("guid", URL + Convert.ToString(!String.IsNullOrEmpty(objResult.Guid) ? "?" + objResult.Guid : ""), Indent + 1)); sb.Append(WriteElement("/item", Indent)); return(sb.ToString()); }
public async Task <SearchResultsInfo> GetSearchResultsAsync(string searchTerms, int maxResults, string languageId, bool haveUser, List <DataProviderFilterInfo> Filters = null) { if (!SearchDataProvider.IsUsable) { return(new SearchResultsInfo()); } SearchResultsInfo info = await ParseAsync(searchTerms, maxResults, languageId, haveUser, Filters); return(info); }
public void TestSearch() { var db = Directory.EnumerateFiles(Environment.CurrentDirectory).FirstOrDefault(x => x.Contains(DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Year.ToString())); if (db == null) return; using (var reader = new StreamReader(db)) { var results = new SearchResults(); results.Results = new List<SearchResult>(); reader.ReadToEnd().Split(new char[] { '\n' }).ToList().ForEach(x => { var result = new SearchResult(); result.Raw = x; results.Results.Add(result); }); var info = new SearchResultsInfo(); var search = new SearchProcessor(); Assert.IsTrue(results.Results.Count > 0, "no results returned."); Assert.IsTrue(search.Execute(results, info), "Search failed."); } }
private void BindData() { object o; var results = new SearchResultsInfoCollection(); if (ddlCategoryList.SelectedIndex == 0) { o = Settings["csCategoryId"]; if (o != null) { int categoryOption; if (int.TryParse(o.ToString(), out categoryOption)) { results = Search(categoryOption, txtCategorySearch.Text.Trim()); } } } else { results = Search(Convert.ToInt32(ddlCategoryList.SelectedValue, CultureInfo.InvariantCulture), txtCategorySearch.Text.Trim()); } var dt = new DataTable { Locale = CultureInfo.InvariantCulture }; //DataColumn dc = new DataColumn("TabId"); dt.Columns.Add(new DataColumn("TabId", typeof(int))); dt.Columns.Add(new DataColumn("Guid", typeof(string))); dt.Columns.Add(new DataColumn("Title", typeof(string))); dt.Columns.Add(new DataColumn("Relevance", typeof(int))); dt.Columns.Add(new DataColumn("Description", typeof(string))); dt.Columns.Add(new DataColumn("PubDate", typeof(DateTime))); //Get the maximum items to display int maxItems; o = Settings["csMaxResults"]; if (o == null || !int.TryParse(o.ToString(), out maxItems)) { maxItems = results.Count; } if (results.Count < maxItems || maxItems < 1) { maxItems = results.Count; } int itemsPage = 10; o = Settings["csPerPage"]; if (o != null) { //itemsPage = Convert.ToInt32(Settings["perpage"]); if (!int.TryParse(o.ToString(), out itemsPage)) { itemsPage = 10; } } int titleLength = 0; o = Settings["csTitleLength"]; if (o != null) { if (!int.TryParse(o.ToString(), out titleLength)) { titleLength = 10; } } int descLength = 0; o = Settings["csDescriptionLength"]; if (o != null) { if (!int.TryParse(o.ToString(), out descLength)) { descLength = 10; } } for (int i = 0; i < maxItems; i++) { SearchResultsInfo resultItem = results[i]; DataRow dr = dt.NewRow(); dr["TabId"] = resultItem.TabId; dr["Guid"] = resultItem.Guid; if (titleLength > 0 && titleLength < resultItem.Title.Length) { dr["Title"] = resultItem.Title.Substring(0, titleLength); } else { dr["Title"] = resultItem.Title; } dr["Relevance"] = resultItem.Relevance; if (descLength > 0 && descLength < resultItem.Description.Length) { dr["Description"] = resultItem.Description.Substring(0, descLength); } else { dr["Description"] = resultItem.Description; } dr["PubDate"] = resultItem.PubDate; dt.Rows.Add(dr); } using (var dv = new DataView(dt)) { dv.Sort = "Relevance DESC"; if (itemsPage < 1) { dgResults.AllowPaging = false; dgResults.PagerStyle.Visible = false; } else { dgResults.PageSize = itemsPage; dgResults.PagerStyle.Visible = results.Count >= dgResults.PageSize; } dgResults.DataSource = dv; dgResults.DataBind(); dgResults.Visible = results.Count != 0; lblNoResults.Visible = results.Count == 0; } }