zoukankan      html  css  js  c++  java
  • SolrNet的基本用法及CURD

    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>>();
    
             var p = new Product()
                 {
                     id = 201,
                     name = "product 201",
                     title = "title 201",
                     category = "201",
                     content = "title 201 green",
                     color = "green",
                     price = 67.92,
                     updatetime = DateTime.Now.AddDays(-101),
                     orderBy = 101
                 };
            solr.Add(p);
            solr.Commit();
    复制代码

        

        3. 删除索引

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

    复制代码
         ISolrOperations<Product> solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
    
            var p = new Product()
            {
                 id = 201,
            };
    
            solr.Delete(p);
            solr.Commit();
    复制代码

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

     

        4.查询

    复制代码
                ISolrOperations<Product> solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
    
                SolrQueryResults<Product> phoneTaggedArticles = solr.Query(new SolrQuery("id:1"));
    
                foreach (Product p in phoneTaggedArticles)
                {
                    Console.WriteLine(string.Format("{0}: {1}", p.id, p.title));
                }
                Console.WriteLine();
    复制代码

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

  • 相关阅读:
    Jzoj4729 道路修建
    Jzoj4727 挺进
    Jzoj4727 挺进
    Jzoj4726 种花
    Jzoj4726 种花
    Jzoj4725 素数序列
    Jzoj4725 素数序列
    力扣算法题—040组合求和二
    力扣算法题—039组合求和
    力扣算法题—038报数
  • 原文地址:https://www.cnblogs.com/vcing/p/13196312.html
Copyright © 2011-2022 走看看