Pregunta

He estado trabajando en hacer una búsqueda utilizando Solrnet que está funcionando de la manera que quiero. Pero acabo gustaría algún consejo sobre la mejor manera de pasar mis parámetros de consulta de mi página web en Solrnet.

Lo que lo ideal sería que hacer es pasar mis parámetros de cadena de consulta similar a como lo hace este sitio: http://www.watchfinder.co.uk/SearchResults.aspx?q= % 3a & f_brand = Rolex y f_bracelets = acero y f_movements = automática.

Como se puede ver en cadena de los sitios de consulta parece que se está pasando en SolrNet directamente. Esto es lo estoy haciendo en el (segmento consulta faceta) 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;
        }       

    }

No logro Por el momento, para ver cómo puedo consultar todos mis resultados de mi código actual de añadir la siguiente cadena de consulta: q = .

¿Fue útil?

Solución

No estoy seguro de lo que entendemos por "parámetros que se pasa en SolrNet directamente". Parece que Watchfinder está usando alguna variante del modelo de la ligante incluida en la aplicación de ejemplo SolrNet .

También echar un vistazo a la controlador en la muestra aplicación para ver cómo se construyen los parámetros SolrNet.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top