0

我一直在努力使用 Solrnet 进行搜索,这正在按照我想要的方式工作。但我只是想要一些关于将我的查询参数从我的网页传递到 Solrnet 的最佳方式的建议。

我最理想的做法是传递我的查询字符串参数,类似于此站点的操作方式:http ://www.watchfinder.co.uk/SearchResults.aspx?q= %3a &f_brand=Rolex&f_bracelets=Steel&f_movements=Automatic。

正如您从站点查询字符串中看到的那样,它看起来像是直接传递到 SolrNet 中的。这是我目前正在做的事情(方面查询段):

公共类 SoftwareSalesSearcher
    {
        公共静态 SoftwareSalesSearchResults Facet()
        {
            IsolrOperations solr = SolrOperationsCache.GetSolrOperations(ConfigurationManager.AppSettings["SolrUrl"]);

        //遍历querystring获取查询Solrnet所需的字段
            列表查询集合 = 新列表();
            foreach(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 选项 = 新的 QueryOptions
            {
                行 = 0,
                方面 = 新方面参数 {
                    查询 = new[] { 新 SolrFacetQuery(lessThan25),新 SolrFacetQuery(moreThan25),新 SolrFacetQuery(moreThan50),新 SolrFacetQuery(moreThan75) }
                                            },
                FilterQueries = queryCollection.ToArray()
            };


            var 结果 = solr.Query(SolrQuery.All, 选项);

            var searchResults = new SoftwareSalesSearchResults();

            列出软件SalesInformation = new List();

            foreach(results.FacetQueries 中的 var facet)
            {
                如果(方面。值!= 0)
                {
                    SoftwareSalesFacetDetail salesItem = new SoftwareSalesFacetDetail();

                    salesItem.Price = facet.Key;
                    salesItem.Value = facet.Value;

                    软件SalesInformation.Add(salesItem);
                }

            }

            searchResults.Results = 软件销售信息;
            searchResults.TotalResults = 结果.NumFound;
            searchResults.QueryTime = 结果.Header.QTime;

            返回搜索结果;
        }       

    }

目前,我似乎看不到如何通过添加以下查询字符串从当前代码中查询所有结果: q= :

4

1 回答 1

1

我不确定“将参数直接传递到 SolrNet”是什么意思。似乎 watchfinder 正在使用SolrNet 示例应用程序中包含的模型绑定器的一些变体。

还可以查看示例应用程序中的控制器,了解 SolrNet 参数是如何构建的。

于 2011-01-13T14:44:51.800 回答