题
我一直在努力使用按照我想要的方式进行搜索。但是,我只是想提供一些最佳方法,以将我的查询参数从我的网页传递到Solrnet。
理想情况下,我想做的就是通过我的查询字符串参数类似于此站点的工作方式: http://www.watchfinder.co.uk/searchresults.aspx?q=%3A&f_brand =劳力士&f_bracelets =钢和f_movements =自动。
从网站查询字符串中可以看到,看起来它似乎正在直接传递到Solrnet中。这是我目前正在这样做的(facet查询段):
public class SoftwareSalesSearcher { public static SoftwareSalesSearchResults Facet() { ISolrOperations solr = SolrOperationsCache.GetSolrOperations(ConfigurationManager.AppSettings["SolrUrl"]); //Iterate through querystring to get the required fields to query Solrnet List queryCollection = new List(); foreach (string key in HttpContext.Current.Request.QueryString.Keys) { queryCollection.Add(new SolrQuery(String.Format("{0}:{1}", key, HttpContext.Current.Request.QueryString[key]))); } var lessThan25 = new SolrQueryByRange("SoftwareSales", 0m, 25m); var moreThan25 = new SolrQueryByRange("SoftwareSales", 26m, 50m); var moreThan50 = new SolrQueryByRange("SoftwareSales", 51m, 75m); var moreThan75 = new SolrQueryByRange("SoftwareSales", 76m, 100m); QueryOptions options = new QueryOptions { Rows = 0, Facet = new FacetParameters { Queries = new[] { new SolrFacetQuery(lessThan25), new SolrFacetQuery(moreThan25), new SolrFacetQuery(moreThan50), new SolrFacetQuery(moreThan75) } }, FilterQueries = queryCollection.ToArray() }; var results = solr.Query(SolrQuery.All, options); var searchResults = new SoftwareSalesSearchResults(); List softwareSalesInformation = new List(); foreach (var facet in results.FacetQueries) { if (facet.Value != 0) { SoftwareSalesFacetDetail salesItem = new SoftwareSalesFacetDetail(); salesItem.Price = facet.Key; salesItem.Value = facet.Value; softwareSalesInformation.Add(salesItem); } } searchResults.Results = softwareSalesInformation; searchResults.TotalResults = results.NumFound; searchResults.QueryTime = results.Header.QTime; return searchResults; } }
目前,我似乎看不到如何通过添加以下查询来查询当前代码的所有结果:q =:.
解决方案
我不确定“直接传递到solrnet”的参数是什么意思。看来WatchFinder正在使用某种变体 Solrnet样品应用中包含的模型粘合剂.
也看一下 示例应用程序中的控制器 查看如何构建Solrnet参数。
不隶属于 StackOverflow