Ладный способ передачи параметров запроса в Solrnet

Я работал над поиском с использованием Solrnet, который работает так, как я хочу. Но мне просто нужен совет о том, как лучше всего передать параметры моего запроса с моей веб-страницы в Solrnet.

В идеале я бы хотел передать параметры строки запроса, аналогичные тому, как это делает этот сайт: http://www.watchfinder.co.uk/SearchResults.aspx?q= % 3a & f_brand = Rolex & f_bracelets = Steel & f_movements = Automatic.

Как видно из строки запроса сайта, похоже, что она передается напрямую в SolrNet. Вот что я делаю сейчас (сегмент фасетного запроса):

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 = :.


person R100    schedule 13.01.2011    source источник


Ответы (1)


Я не уверен, что вы имеете в виду под «параметрами, передаваемыми напрямую в SolrNet». Похоже, что Watchfinder использует какой-то вариант прилагаемого связующего устройства в примере приложения SolrNet.

Также обратите внимание на контроллер в примере приложения, чтобы увидеть, как построены параметры SolrNet.

person Mauricio Scheffer    schedule 13.01.2011
comment
Спасибо, Маурисио. Похоже, я пытаюсь достичь того, чего я хочу. Я попробую! - person R100; 13.01.2011