zoukankan      html  css  js  c++  java
  • 电商指尖---(9).net发展Solr中间Facet特征

                              上一节中我们演示了在SolrAdmin中使用Facet功能来进行分组统计。这一节我们看看如何使用.NET开发Solr中的Facet功能。在讲Facet功能的同一时候,

    我们看下.Net中如何使用Solr查询。使用的client工具是easysorl.net,大家能够去codeplex下载。

    这个工具非常好用。

                看例如以下图,下图就是我们要演示的功能

                   

                1.模糊查询

                                        模糊查询就是搜索指定的汉字得到一个结果。以下的演示样例就是查询商品名称中包括白色的全部商品,终于得到的结果例如以下图

                 

                                              代码

                                                  

            public void Query()
            {
    
                if (string.IsNullOrWhiteSpace(textBox1.Text.Trim()))
                {
                    #region 查询所有
                    
                    var result = operations.Query("collection1", "/select", SolrQuery.All, null);
                    var header = binaryResponseHeaderParser.Parse(result);
                    var examples = binaryQueryResultsParser.Parse(result);
                    this.dataGridView1.DataSource = examples.ToList();
    
                    #endregion
                }
                else
                {
                    #region 按商品名模糊查询
    
                    ISolrQuery solrQuery = new SolrQuery(textBox1.Text.Trim());
                    var result = operations.Query("collection1", "/select", solrQuery, null);
                    var header = binaryResponseHeaderParser.Parse(result);
                    var examples = binaryQueryResultsParser.Parse(result);
                    this.dataGridView1.DataSource = examples.ToList();
    
                    #endregion
                   
                }
            }


     

                2.精确查询

                                    在查询的时候,有时候我们要依据商品的ID或者商品的编码精确的查询到某一个商品。

    以下的样例就演示了按商品编码精确查询的功能。

                  

                 

       if (string.IsNullOrWhiteSpace(textBox2.Text.Trim()))
                {
                    return; 
                }
                string conditon = "ProductCode:" + textBox2.Text.Trim();
                ISolrQuery solrQuery = new SolrQuery(conditon);
                var result = operations.Query("collection1", "/select", solrQuery, null);
                var header = binaryResponseHeaderParser.Parse(result);
                var examples = binaryQueryResultsParser.Parse(result);
                this.dataGridView1.DataSource = examples.ToList();


     

     

                3.Facet分组统计

                    在查询的时候,有的时候。我们须要对查询的结果进行分组。比方想知道包括这个商品的每一个分类有多少商品。每一个价格区间有多少商品。

               以下的样例统计每一个分类有多少商品。

                             

                 

     /// <summary>
            /// facet按类型查询
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button3_Click(object sender, EventArgs e)
            {
                label3.Visible = true;
    
                   var  dic=new Dictionary<string,ICollection<string>>();
                   dic["facet"] = new string[] { "true" };
    
                   var options = new List<string>();
                   options.Add("CategoryName");
                   dic["facet.field"] = options;
                var result = operations.Query("collection1", "/select", SolrQuery.All,dic);
                var header = binaryResponseHeaderParser.Parse(result);
                var examples = binaryQueryResultsParser.Parse(result);
    
                //分组List<FacetField>
                IDictionary<string, IList<FacetField>> facetDic=new BinaryFacetFieldsParser().Parse(result);
                string strFacet = "";
                foreach (var item in facetDic)
                {
                    strFacet +="分组字段:"+item.Key+"
    ";
                    foreach (var facetItem in item.Value)
                    {
                        strFacet += facetItem.Name + "(" + facetItem.Count.ToString() + ")" + "---";
                    }
                }
                label3.Text = strFacet;
                this.dataGridView1.DataSource = examples.ToList();
            }

     
               Demo下载: http://download.csdn.net/detail/zx13525079024/7385945

     


     

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    Vue.nextTick()的介绍和使用场景
    JS实现数据双向绑定
    JS对象的可枚举属性和不可枚举属性
    JS中对象转数组方法总结
    Vmware虚拟机安装XP系统
    javascript和c#的深度拷贝的一种通用方法
    c# SQLServer导入大批量数据
    PowerDesigner逆向工程,从SQL Server数据库生成Physical Model -----数据源方式
    虚拟机和主机ping不通,SQL Server无法远程连接的解决方法
    c#生成试卷。。。
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4679904.html
Copyright © 2011-2022 走看看