指尖上的电商---(9).net开发Solr中的Facet功能

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

我们看下.Net中怎样使用Solr查询。使用的客户端工具是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+"\r\n";
                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

 

指尖上的电商---(9).net开发Solr中的Facet功能,布布扣,bubuko.com

时间: 2024-10-22 08:54:35

指尖上的电商---(9).net开发Solr中的Facet功能的相关文章

指尖上的电商---(4).net开发solr

这一节我们看下如何把查询数据放到server端存储,这里我们须要使用client工具来操作与服务端数据打交道,网上有好多基于.NET开发的SOLRclient,我们这里选择easynet.solr,非常方便的一个DLL, 下载地址:http://easynet.codeplex.com/SourceControl/latest 这一节主要包含Solr数据索引的加入,改动,删除,查询等简单功能. 我们先来看下效果图 1.创建对象 public class Product { /// <summar

指尖上的电商---(10)SolrAdmin中添加多核

在Solr中有的时候,我们并不只是需要一种形式的索引文件,可能需要多种不同数据的索引文件,这时我们就可以在同一个Solr下面创建 多核.比如,我们在solr下面想把产品信息和分类信息各存放一个索引,并且各自有独立的配置和索引文件,不同核心的SOLRF放在不同的目录下, 这时候,我们就需要创建多核模式. 看如下图,创建了collection1和Product两个索引,每个有自己的配置和文件存储的地方. 具体操作步骤如下: 1.在tomcat下solr所指向的目录下创建一个Product目录,我这里

指尖上的电商---(7)Solr索引基本操作

我们来看下通过界面来操作SOLR,包括SOLR索引的添加,查询等基本操作. 所有的基本操作都通过如下地址来完成 http://localhost:8040/Solr/#/collection1/documents 1.添加和修改 点击界面做出的documents链接,索引的添加修改都是在这个界面完成的. Request-Handler 表示操作方式 Document Type:表示数据操作类型的传输格式,有XML,JSON等多种格式 Documents 表示要添加的数据 CommitWithIn

指尖上的电商---(8)Solr中Facet的用法

在大型电子商务网站中,在商品列表页,我们都可以看到商品按分类,品牌,价格的分类显示,如下图,这些我们可以使用solr中的facet功能实现. facet的基本功能就是对搜索结果中的商品进行分类. 1.facet用法 facet.field:指定要分类的字段 facet=on 或 facet=true表示功能开启 facet.prefix 表示字段前缀 facet.limit 表示返回的记录数 facet.offict 表示从第几条开始,主要用于分页 指尖上的电商---(8)Solr中Facet的

指尖上的电商---(12)SolrAdmin中加入多核的还有一种方法

这一节中我们演示下solr中创建多核的还有一种方法. 接第10讲,首先关闭tomcatserver 1.解压solr-4.8.0后,找到solr-4.8.0以下的example目录下的multicore目录 2. 把multicore目录下的全部文件复制到D:\Server\Solr目录以下 3.启动tomcatserver,打开地址http://localhost:8040/solr/#/,就能够看到core0和core1两个索引了. 同理我们也能够加入多个 例如以下图: 指尖上的电商---(

指尖上的电商---(12)SolrAdmin中添加多核的另一种方法

这一节中我们演示下solr中创建多核的另一种方法. 接第10讲,首先关闭tomcat服务器 1.解压solr-4.8.0后,找到solr-4.8.0下面的example文件夹下的multicore文件夹 2. 把multicore文件夹下的所有文件拷贝到D:\Server\Solr文件夹下面 3.启动tomcat服务器,打开地址http://localhost:8040/solr/#/,就可以看到core0和core1两个索引了. 同理我们也可以添加多个 如下图: 指尖上的电商---(12)So

指尖上的电商---(6)solrconfig.xml配置详解

solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括索引数据的存放位置,更新,删除,查询的一些规则配置. 可以在tomcat的安装路径下找到这个文件C:\Program Files\Apache Software Foundation\Tomcat 8.0\solr\collection1\conf 1.datadir节点 1.<dataDir>${solr.data.dir:d:/Server/Solr/data}</dataDir>定义了索引数据和日志文件

指尖上的电商---(11)Windows平台部署SolrCloud

SolrCloud是一种分布式解决方式,是基于zookeeper和solr的,能够简单理解为一种集群,能够提供分布式查询.分布式写索引. SolrCloud的结构大致是这种,一个SolrCloud包含多个Shared节点.一个Shared的包含Solr节点.当中每一个Shared中的有一个Leader Solr节点.多个Replica节点. 每一个SOLR节点的内容是一样的. 我们这节看下怎么在windows平台上部署solrCloud 须要下载下程序.详细安装配置能够前几节的教程  tomca

指尖上的电商---(3)Solr全文搜索引擎的配置

接上篇,Solr的准备工作完毕后,本节主要介绍Solr的安装,事实上Solr不须要安装.直接下载就能够了      1.Solr配置 下载地址 :http://lucene.apache.org/solr/ 1.在D盘下创建文件夹 D:\Server\Solr 2.解压solr-4.8.0文件,我这里下载的是这个4.8版本号,将example目录下的Solr目录中的全部文件复制到D:\Server\Solr目录下 3.创建Solr web应用,将解压后的solr-4.8.0下的dist文件夹下的