Domanda

Ho lavorato per rendere una ricerca utilizzando Solrnet che sta lavorando il modo in cui voglio. Ma ho appena vorrei qualche consiglio sul modo migliore per passare i miei parametri di query dalla mia pagina web in Solrnet.

Quello che vorrei idealmente come fare è passare i miei parametri di stringa di query simili a come questo sito lo fa: http://www.watchfinder.co.uk/SearchResults.aspx?q= % 3a & f_brand = Rolex & f_bracelets = Steel & f_movements = automatico.

Come si può vedere da stringa i siti di query sembra che viene passato in SolrNet direttamente. Ecco lo faccio al (segmento di query sfaccettatura) momento:

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

    }

Al momento non posso sembrare di vedere come posso interrogare tutti i miei risultati dal mio codice corrente da aggiungere il seguente querystring: q = :.

È stato utile?

Soluzione

Non sono sicuro di cosa si intende per "i parametri di essere passato in SolrNet direttamente". Sembra che Watchfinder utilizza qualche variante del modello legante incluso nel campione SolrNet applicazione .

Anche dare un'occhiata alla regolatore nel campione App per vedere come i parametri SolrNet sono costruiti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top