public void Random() { var r = new RandomSortOrder("random"); var rndSort = r.ToString(); Console.WriteLine(rndSort); Assert.Like(rndSort, "random_\\d+ asc"); }
public void RandomWithOrder() { var r = new RandomSortOrder("random", Order.DESC); var rndSort = r.ToString(); Console.WriteLine(rndSort); Assert.Like(rndSort, "random_\\d+ desc"); }
public void Random() { var r = new RandomSortOrder("random"); var rndSort = r.ToString(); Console.WriteLine(rndSort); Assert.That(rndSort, Is.StringMatching("random_\\d+ asc")); }
public void Random() { var r = new RandomSortOrder("random"); var rndSort = r.ToString(); Console.WriteLine(rndSort); StringAssert.IsMatch("random_\\d+ asc", rndSort); }
public void RandomWithSeedAndOrder() { const string seed = "234asd"; var r = new RandomSortOrder("random", seed, Order.DESC); var rndSort = r.ToString(); Console.WriteLine(rndSort); Assert.Like(rndSort, string.Format("random_{0} desc", seed)); }
public void RandomWithOrder() { var r = new RandomSortOrder("random", Order.DESC); var rndSort = r.ToString(); Console.WriteLine(rndSort); StringAssert.IsMatch("random_\\d+ desc", rndSort); }
public void RandomWithSeed() { const string seed = "234asd"; var r = new RandomSortOrder("random", seed); var rndSort = r.ToString(); Console.WriteLine(rndSort); Assert.That(rndSort, Is.StringMatching(string.Format("random_{0} asc", seed))); }
public void RandomWithOrder() { var r = new RandomSortOrder("random", Order.DESC); var rndSort = r.ToString(); testOutputHelper.WriteLine(rndSort); Assert.Matches("random_\\d+ desc", rndSort); }
public void RandomWithSeedAndOrder() { const string seed = "234asd"; var r = new RandomSortOrder("random", seed, Order.DESC); var rndSort = r.ToString(); Console.WriteLine(rndSort); Assert.AreEqual(rndSort, string.Format("random_{0} desc", seed)); }
public void RandomWithSeed() { const string seed = "234asd"; var r = new RandomSortOrder("random", seed); var rndSort = r.ToString(); Console.WriteLine(rndSort); Assert.Like(rndSort, string.Format("random_{0} asc", seed)); }
public void RandomWithSeedAndOrder() { const string seed = "234asd"; var r = new RandomSortOrder("random", seed, Order.DESC); var rndSort = r.ToString(); testOutputHelper.WriteLine(rndSort); Assert.Equal(rndSort, string.Format("random_{0} desc", seed), true, true, true); }
public void RandomWithOrder() { var r = new RandomSortOrder("random", Order.DESC); var rndSort = r.ToString(); Console.WriteLine(rndSort); Assert.That(rndSort.Contains("random_"), Is.True); Assert.That(rndSort.Contains(" desc"), Is.True); }
//public String GetBaseUri(HttpRequestBase req, UrlHelper url_helper) //{ // if (req.Url != null) // { // return string.Format("{0}://{1}{2}", req.Url.Scheme, req.Url.Authority, url_helper.Content("~")); // } // LogHelper.StatsLog(null, "GetBaseUri()", String.Format("Failed, request is null!"), null, null); // return "http://localhost/"; //} // public abstract SolrSearchResults Search(string term, List<string> ids, int rows, int row_start, string parent_id, List<SortField> sort_orders, List<KeyValuePair<string, string>> facet_constraints, List<KeyValuePair<string, string>> facets, List<FacetRange> facet_ranges); // public abstract SolrSearchResults GetRecord(string id); // public abstract SolrSearchResults GetSearchSuggestions(string str); public virtual SolrSearchResults Search(SearchQuery query, List <KeyValuePair <string, string> > facets, List <FacetRange> facet_ranges) { // string solr_term = (ids.Count > 0) ? String.Format("{0}:^", _solrIdField) : makeSolrTerm(term, ids); string solr_term = makeSolrTerm(query.Term, query.IDs); //if (String.IsNullOrEmpty(query.ParentID)) // solr_term = String.Format("{0} AND -{1}:[* TO *]", solr_term, ParentIdFieldName); //else // solr_term = String.Format("{0} AND {1}:{2}", solr_term, ParentIdFieldName, query.ParentID); if (String.IsNullOrEmpty(query.ParentID)) { solr_term = String.Format("{0} AND -{1}:[* TO *]", solr_term, ParentIdFieldName); } else { solr_term = String.Format("{0} AND {1}:{2}", solr_term, ParentIdFieldName, query.ParentID); } #region facet constraints var str = new StringBuilder(); var i = 0; foreach (FacetConstraint f in query.FacetConstraints) // KeyValuePair<string, List<string>> { int j = 0; str.Append("("); foreach (string val in f.Constraints) { if (val.Contains(" to ")) { // facet range, need to convert user friendly name sent by ajax back to correct db field name, if needed var fn = f.Field; foreach (FacetRange fr in facet_ranges) { if (fn == fr.DisplayName) { fn = fr.Field; break; } } // iterate over string list of values here, for multi valued constraints same key = OR, when going to different key AND // if not multi valued constraints then always AND? str.Append(String.Format("{0}:[{1}]", fn.Replace(":", @"\:"), val.ToUpper())); // str.Append("DateStartYear:[1800 TO 1900]"); } else { str.Append(String.Format("{0}:{1}{2}{3}", f.Field.Replace(":", @"\:"), "\"", val, "\"")); } j++; if (j != f.Constraints.Count) { str.Append(" OR "); } else { str.Append(")"); } } i++; if (i != query.FacetConstraints.Count) { //if(MultiFacetConstraints) // str.Append(" OR "); //else str.Append(" AND "); } } var d = new Dictionary <string, string> { { "fq", str.ToString() }, { "facet.sort", "count" } }; // ordering of the facets #endregion #region search term highlighting if (!String.IsNullOrEmpty(query.Term)) // if user has entered a search term then we want highlighting of that term in the results, if not we don't want it as adds overheads { d.Add("hl", "on"); d.Add("hl.fl", "*"); // d.Add("hl.fragsize", "0"); } #endregion search term highlighting #region facet queries // only needed if not multi facet constraints, as multi facet constraints are enabled then we don't need to refine the // available facets with the search (ie only return facets applicable to the search, the list obtained once at the start // remains valid, so no point adding overheads to this query // NB: if we are requesting 0 rows of results then this must be a request just for facet data, so in this case add the facet params var facet = new FacetParameters(); facet.Limit = FacetLimit; if ((MultiFacetConstraints == false) || (query.Rows == 0)) { var queries = new List <ISolrFacetQuery>(); foreach (KeyValuePair <string, string> kvp in facets) // these come from the app config { queries.Add(new SolrFacetFieldQuery(kvp.Key)); } // have to use the slightly crude method below as Facet by Range is in Solr 3.1+ but not exposed by solrnet // see no FaceRanges property exposed by Solr results object // Would want to use following: &facet.range=DateStartYear&f.DateStartYear.facet.range.start=1000&f.DateStartYear.facet.range.end=2100&f.DateStartYear.facet.range.gap=50 // Full query: http://armserv:8080/solr/core1/select?facet=true&facet.sort=count&start=0&q=*:*+AND+-ParentNodes:[*+TO+*]&?=&fq=&rows=0&facet.field=Genre&facet.range=DateStartYear&f.DateStartYear.facet.range.start=1000&f.DateStartYear.facet.range.end=2100&f.DateStartYear.facet.range.gap=50 foreach (FacetRange fr in facet_ranges) // these need to come from the app config { if (fr.WildcardLower) { queries.Add(new SolrFacetQuery(new SolrQueryByRange <string>(fr.Field, "*", (fr.From - 1).ToString()))); } for (int y = fr.From; y < fr.To; y = y + fr.Gap) { queries.Add(new SolrFacetQuery(new SolrQueryByRange <string>(fr.Field, y.ToString(), (y + (fr.Gap - 1)).ToString()))); } if (fr.WildcardUpper) { queries.Add(new SolrFacetQuery(new SolrQueryByRange <string>(fr.Field, (fr.To + 1).ToString(), "*"))); } } facet.Queries = queries; } #endregion #region sort orders var order_by = new List <SortOrder>(); foreach (SortField sf in query.SortFields) { SortOrder so; if (sf.DbField == "Random") { so = new RandomSortOrder("randomF"); } else { var order = Order.ASC; if (sf.SortDirection.ToLower() == "desc") { order = Order.DESC; } so = new SortOrder(sf.DbField, order); } order_by.Add(so); } #endregion sort orders // i think the below could be put in super classes, and makeSolrSearchResults changed to accept the disassembled properties of the specific IInqItem implementation #region ninject approach doesn't work, get "can't create instance of interface" error? /*using (IKernel kernel = new StandardKernel(new SolrNetModule(_solrUri))) * { * var solr = kernel.Get<ISolrOperations<IInqItem>>(); * try * { * var results = solr.Query(new SolrQuery(solr_term), new QueryOptions { Rows = rows, Start = row_start, Facet = facet, OrderBy = order_by, ExtraParams = d }); * return makeSolrSearchResults(results, facets, facet_ranges); * } * catch (Exception e) * { * throw new Exception("Fatal error, could not perform search, Solr not responding?: " + e.Message); * } * }*/ #endregion // var solr = ServiceLocator.Current.GetInstance<ISolrOperations<InqItemArmNode>>(); // var solr = ServiceLocator.Current.GetInstance<ISolrOperations<InqItemBod>>(); //try //{ var results = Solr.Query(new SolrQuery(solr_term), new QueryOptions { Rows = query.Rows, Start = query.RowStart, Facet = facet, OrderBy = order_by, ExtraParams = d }); return(makeSolrSearchResults(results, facets, facet_ranges)); //} //catch (Exception e) //{ // throw new Exception("Fatal error, could not perform search, Solr not responding or failed to create results?: " + e.Message); //} }