Question

Je travaille à faire une recherche à l'aide Solrnet qui travaille comme je veux. Mais je voudrais juste quelques conseils sur la meilleure façon de passer mes paramètres de requête de ma page web en Solrnet.

Ce que je voudrais idéalement faire est de passer mes paramètres de chaîne de requête similaire à la façon dont ce site le fait: http://www.watchfinder.co.uk/SearchResults.aspx?q= % 3a & f_brand = Rolex & f_bracelets = Steel & f_movements = automatique.

Comme vous pouvez le voir sur la chaîne de sites, il ressemble il est passé dans SolrNet directement. Voici ce que je fais en ce moment (facette segment de requête):

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;
        }       

    }

À l'heure actuelle, je ne peux pas sembler voir comment je peux interroger tous mes résultats de mon code actuel par ajouter la chaîne de requête suivante: q = .

Était-ce utile?

La solution

Je ne sais pas ce que vous entendez par « paramètres étant passé dans SolrNet directement ». Il semble que Watchfinder utilise une variante du modèle de la .

Jetez aussi un oeil sur le contrôleur dans l'échantillon app pour voir comment les paramètres de SolrNet sont construits.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top