上一篇已经讲到了Solr 查询的相关的参数。这里在讲讲C#是如何通过客户端请求和接受solr服务器的数据, 这里推荐使用SolrNet,主要是:SolrNet使用非常方便,而且用户众多,一直都在更新,感兴趣的可以加入他们的邮件群组,方便迅速了解SolrNet的最新动态。
SorlNet源码地址:https://github.com/mausch/SolrNet
SolrNet使用说明文档:https://github.com/mausch/SolrNet/tree/master/Documentation
一、创建一个项目控制台程序,并引用SolrNet.dll。Demo下载
[flash=500,400]http://s1.knowsky.com/20160211/clsfhvmqitw28.png[/flash]
注意:SolrNet 依赖HttpWebAdapters.dll和Microsoft.PRactices.ServiceLocation.dll 这两个dll 文件,所以,如果编译或者测试有问题,引用这两个dll 文件应该就ok了。
二、在solr 的schema.xml增加相关的Filed 字段,同时创建一个实体类,与schema.xml中的Filed 字段映射。
publicclassProduct
{
[SolrUniqueKey("id")]publicintid {get;set; }
[SolrField("name")]publicstringname {get;set; }
[SolrField("title")]publicstringtitle {get;set; }
[SolrField("category")]publicstringcategory {get;set; }
[SolrField("content")]publicstringcontent {get;set; }
[SolrField("price")]publicdoubleprice {get;set; }
[SolrField("color")]publicstringcolor {get;set; }
[SolrField("updatetime")]publicDateTime updatetime {get;set; }
[SolrField("orderBy")]publicintorderBy {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>>();varp =newProduct()
{
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>>();varp =newProduct()
{
id=201,
};
solr.Delete(p);
solr.Commit();
注意:调用 Add() 或是 Delete()方法,必须在他们之后加上 Commit(),否是请求是不会被处理的。
4.查询
ISolrOperations<Product> solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
SolrQueryResults<Product> phoneTaggedArticles = solr.Query(newSolrQuery("id:1"));foreach(Product pinphoneTaggedArticles)
{
Console.WriteLine(string.Format("{0}: {1}", p.id, p.title));
}
Console.WriteLine();
到这里,Solrnet的基本用法已经说完了,下一篇,将聊聊Solr的一些高级用法,solr 的复杂查询,高亮,Facet分组查询等。