• Solr学习总结(五)SolrNet的基本用法及CURD


    上一篇已经讲到了Solr 查询的相关的参数。这里在讲讲C#是如何通过客户端请求和接受solr服务器的数据, 这里推荐使用SolrNet,主要是:SolrNet使用非常方便,而且用户众多,一直都在更新,感兴趣的可以加入他们的邮件群组,方便迅速了解 SolrNet的最新动态。

     

      SorlNet源码地址:https://github.com/mausch/SolrNet

      SolrNet使用说明文档:https://github.com/mausch/SolrNet/tree/master/Documentation

     

      一、创建一个项目控制台程序,并引用SolrNet.dll。Demo下载

        

      注意:SolrNet 依赖HttpWebAdapters.dll和Microsoft.Practices.ServiceLocation.dll 这两个dll 文件,所以,如果编译或者测试有问题,引用这两个dll 文件应该就ok了。

     

      二、在solr 的schema.xml 增加相关的Filed 字段,同时创建一个实体类,与schema.xml中的Filed 字段映射。

     
      public class Product { [SolrUniqueKey(id)] public int id { get; set; } [SolrField(name)] public string name { get; set; } [SolrField(title)] public string title { get; set; } [SolrField(category)] public string category { get; set; } [SolrField(content)] public string content { get; set; } [SolrField(price)] public double price { get; set; } [SolrField(color)] public string color { get; set; } [SolrField(updatetime)] public DateTime updatetime { get; set; } [SolrField(orderBy)] public int orderBy { get; set; } }
     

        同时,schema.xml中也要加上相应的Filed 字段,打开solr_homemycore1conf 下的schema.xml文件,增加如下Field 配置,如果不知道如何操作,请参考前一篇文章,《Solr学习总结(二)Solr的安装与配置》

     
    <field name=id type=int indexed=true stored=true required=true multiValued=false /> <field name=name type=string indexed=true stored=true required=true multiValued=false /> <field name=title type=string indexed=true stored=true required=true multiValued=false /> <field name=category type=string indexed=true stored=true required=true multiValued=false /> <field name=content type=string indexed=true stored=true required=true multiValued=false /> <field name=price type=double indexed=true stored=true required=true multiValued=false /> <field name=color type=string indexed=true stored=true required=true multiValued=false /> <field name=orderBy type=int indexed=true stored=true required=true multiValued=false /> <field name=updatetime type=date indexed=true stored=true required=true multiValued=false />
     

      

      三、开始调用solrnet:

          1.初始化

       Startup.Init<Product>(http://localhost:8080/solr/mycore1);

        

        2.增加和修改索引(document)

          Solr 索引的增加和修改,都是Add() 方法,solr 会自动判断是否存在此所以,有就修改,没有就新增。

     

         ISolrOperations<Product> solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();

         </span><span style="color:#0000ff;">var</span> p = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Product()
             {
                 id </span>= <span style="color:#800080;">201</span><span style="color:#000000;">,
                 name </span>= <span style="color:#800000;">"</span><span style="color:#800000;">product 201</span><span style="color:#800000;">"</span><span style="color:#000000;">,
                 title </span>= <span style="color:#800000;">"</span><span style="color:#800000;">title 201</span><span style="color:#800000;">"</span><span style="color:#000000;">,
                 category </span>= <span style="color:#800000;">"</span><span style="color:#800000;">201</span><span style="color:#800000;">"</span><span style="color:#000000;">,
                 content </span>= <span style="color:#800000;">"</span><span style="color:#800000;">title 201 green</span><span style="color:#800000;">"</span><span style="color:#000000;">,
                 color </span>= <span style="color:#800000;">"</span><span style="color:#800000;">green</span><span style="color:#800000;">"</span><span style="color:#000000;">,
                 price </span>= <span style="color:#800080;">67.92</span><span style="color:#000000;">,
                 updatetime </span>= DateTime.Now.AddDays(-<span style="color:#800080;">101</span><span style="color:#000000;">),
                 orderBy </span>= <span style="color:#800080;">101</span><span style="color:#000000;">
             };
        solr.Add(p);
        solr.Commit();</span>
    
     

        

        3. 删除索引

          solrnet 重写了多个 delete()方法。这里只介绍一个,其他的自己研究吧。

     

         ISolrOperations<Product> solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();

        </span><span style="color:#0000ff;">var</span> p = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Product()
        {
             id </span>= <span style="color:#800080;">201</span><span style="color:#000000;">,
        };
    
        solr.Delete(p);
        solr.Commit();</span>
    
     

        注意:调用 Add() 或是 Delete()方法,必须在他们之后加上  Commit(),否是请求是不会被处理的。

     

        4.查询

     
            ISolrOperations&lt;Product&gt; solr = ServiceLocator.Current.GetInstance&lt;ISolrOperations&lt;Product&gt;&gt;<span style="color:#000000;">();
    
            SolrQueryResults</span>&lt;Product&gt; phoneTaggedArticles = solr.Query(<span style="color:#0000ff;">new</span> SolrQuery(<span style="color:#800000;">"</span><span style="color:#800000;">id:1</span><span style="color:#800000;">"</span><span style="color:#000000;">));
    
            </span><span style="color:#0000ff;">foreach</span> (Product p <span style="color:#0000ff;">in</span><span style="color:#000000;"> phoneTaggedArticles)
            {
                Console.WriteLine(</span><span style="color:#0000ff;">string</span>.Format(<span style="color:#800000;">"</span><span style="color:#800000;">{0}: {1}</span><span style="color:#800000;">"</span><span style="color:#000000;">, p.id, p.title));
            }
            Console.WriteLine();</span>
    
     

         到这里,Solrnet的基本用法已经说完了,下一篇,将聊聊Solr的一些高级用法,solr 的复杂查询,高亮,Facet分组查询等。

  • 相关阅读:
    拉钩爬取部分重写
    树莓派yolov3 测试训练结果时出现段错误或总线错误解决方法
    服务注册与发现【Eureka】- Eureka自我保护
    服务注册与发现【Eureka】- 服务发现Discovery
    服务注册与发现【Eureka】- 集群Eureka构建步骤
    服务注册与发现【Eureka】- 单机Eureka构建步骤
    服务注册与发现【Eureka】- Eureka简介
    SpringCloud正式开发前 -- 基础项目框架搭建
    服务注册与发现【Zookeeper】
    【校招】【内推】【阿里云】 ECS、神龙计算平台招聘|【经验分享】
  • 原文地址:https://www.cnblogs.com/gangzhucoll/p/12778351.html
Copyright © 2020-2023  润新知