Frage

Ich habe eine Suche arbeitet mit Solrnet auf machen, die die Art und Weise arbeitet ich will. Aber ich möchte nur ein paar Ratschläge über die beste Art und Weise meine Abfrageparameter aus meiner Web-Seite in Solrnet passieren.

Was würde ich wie im Idealfall zu tun ist meine Abfrage-String-Parameter ähnlich passieren, wie diese Seite funktioniert es: http://www.watchfinder.co.uk/SearchResults.aspx?q= % 3a & f_brand = Rolex & f_bracelets = Steel & f_movements = Automatik.

Wie Sie aus den Websites Query-String sieht es sieht aus wie es direkt in SolrNet geben wird. Hier mache ich es im Moment (Facette Abfrage Segment):

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

    }

Im Moment kann ich scheine nicht zu sehen, wie ich alle meine Ergebnisse von meinem aktuellen Code abfragen, indem Sie den folgenden Abfragezeichenfolgeflag hinzufügen: q = .

War es hilfreich?

Lösung

Ich bin nicht sicher, was Sie unter „Parameter in SolrNet werden direkt weitergegeben“. Es scheint, dass Watchfinder ist eine Variante des Modell mit Bindemittel enthalten in der SolrNet Beispielanwendung .

Werfen Sie auch einen Blick auf die Controller in der Probe App zu sehen, wie die SolrNet Parameter erstellt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top