上一篇已经讲到了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_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>>();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分组查询等。

Solr学习总结(五)SolrNet的基本用法及CURD相关推荐

  1. 学习Kotlin(五)函数与Lambda表达式

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

  2. Vue 学习第五天 学习笔记

    Vue   学习第五天 1. keyup事件 <div id="app"> <input type="text" v-model=" ...

  3. StackExchange.Redis学习笔记(五) 发布和订阅

    StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...

  4. html5类选择器用什么表示,HTML_揭秘常用的五类CSS选择器用法,有许多新手朋友不知道在什么 - phpStudy...

    揭秘常用的五类CSS选择器用法 有许多新手朋友不知道在什么情况下运用什么样的CSS选择器,针对新手朋友,对CSS选择器作一些简单的说明,这里重点介绍一下最常用的五类CSS选择器的使用. 本文向大家描述 ...

  5. 大数据学习系列:Hadoop3.0苦命学习(五)

    传送门: 大数据学习系列:Hadoop3.0苦命学习(一) 大数据学习系列:Hadoop3.0苦命学习(二) 大数据学习系列:Hadoop3.0苦命学习(三) 大数据学习系列:Hadoop3.0苦命学 ...

  6. 文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)

    前言: 上一篇比较详细的介绍了卡方检验和卡方分布.这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行.然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样 ...

  7. Web学习(五)中期项目-简易拳皇

    Web学习(五)中期项目-简易拳皇 项目参考地址:https://git.acwing.com/yxc/kof 游戏的基本原理:主要依靠requestAnimationFrame实现,该函数会在下次浏 ...

  8. invader的java学习第五天基础篇

    invader的java学习第五天基础篇(持续更新中-) 一.位运算符 ^.&.|.~.>>.<<.>>>,位运算符就是基于二进制直接进行运算(0为f ...

  9. Linux内核学习(五):linux kernel源码结构以及makefile分析

    Linux内核学习(五):linux kernel源码结构以及makefile分析 前面我们知道了linux内核镜像的生成.加载以及加载工具uboot. 这里我们来看看linux内核的源码的宏观东西, ...

  10. 强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例----Sarsa算法, Q学习, 期望Sarsa算法

    强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例 5.1 TD预测 例5.1 回家时间的估计 5.2 TD预测方法的优势 例5.2 随机移动 5.3 ...

最新文章

  1. NodeJS API简介
  2. CenterNet2:比强更强的二阶段网络,COCO成绩最高达到56.4mPA
  3. h5 img js 点击图片放大_H5实现移动端图片预览:手势缩放, 手势拖动,双击放大......
  4. 最常见的5个导致节点重新启动、驱逐或 CRS 意外重启的问题
  5. 蛙蛙推荐:在c#使用IOCP(完成端口)的简单示例
  6. 似然函数(likelihood function)
  7. sql中的distinct
  8. VUE优秀的组件库总结
  9. 区块链 p2p点对点网络是什么
  10. 关于@Autowired的使用:推荐使用构造函数进行注入
  11. php中用户自定义排序
  12. 环境规制指数,两种测算方法,整理好的面板数据
  13. 通用数据权限管理系统设计
  14. 学习笔记3--车载传感器之毫米波雷达和超声波雷达
  15. 批处理命令--call和start
  16. Ubuntu14.04/16.0 安装N卡驱动
  17. html中siblings方法,jQuery中的siblings()是什么意思(推荐)
  18. ​ ViewBag​
  19. 用VB.NET设计各种形状的窗体界面(图)
  20. python输入abcd输出对应的1234_python学习日记——练习题整理及解答

热门文章

  1. atitit.团队建设--要不要招技术储备人才的问题
  2. paip.编程语言到底有没有优劣之分优秀之分
  3. paip.备份导出ANDROID安卓自带记事本内容
  4. Rust : RwLock读写锁
  5. CTP: NET封装后接口中序列化数据的问题
  6. 从心理学角度看,如何通过故事影响客户的决策?
  7. 蚂蚁可信原生负责人入选“2021年度全球青年领袖”名单
  8. 新品Demo —— ZStack Mini 超融合一体机
  9. oracle clob 导出csv,在Apex把csv导入数据库Clob字段再导入到各自对应列的解决方法...
  10. 【元胞自动机】基于matlab元胞自动机双通道交通【含Matlab源码 1657期】