我一直在努力使用按照我想要的方式进行搜索。但是,我只是想提供一些最佳方法,以将我的查询参数从我的网页传递到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参数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top