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下载

    306976-20151224184539312-1224950941.png

  注意: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_home\mycore1\conf 下的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分组查询等。

转载于:https://www.cnblogs.com/BMFramework/p/10017328.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值