solr與.net系列課程(五)solrnet的使用
最近因項目比較忙,所以這篇文章出的比較晚,離上一篇文章已經有半個月的時間了,這節課我們來學下一下solr的.net客戶端solrnet
出處https://github.com/mausch/SolrNet
上一篇文章講述了C#是如何請求和接受solr的數據的,請求鏈接是自己拼接的,接受數據是使用數據契約,solrnet就是把這些步驟封裝起來,大家直接調用方法就可以請求和接受數據
首先要下載solrnet所要使用的DLL
Microsoft.PRactices.ServiceLocation.dll
SolrNet.dll
HttpWebAdapters.dll
下載地址http://pan.baidu.com/s/1pJt7Wr5
創建一個項目,然后引用上面的DLL
好了,下面就開始實戰, 我們來設計一個查詢條件 title="關鍵字" and (area="北京" or area="上海") andindustry="電力" andcolumns="項目" order time desc
(1)創建一個接收數據的實體類,內容如下
using System;using System.Collections.Generic;using System.Linq;using System.Web;using SolrNet.Attributes;namespace Webapplication5{ public class Article { [SolrUniqueKey("id")] public int id { get; set; } [SolrField("title")] public string title { get; set; } [SolrField("area")] public string area { get; set; } [SolrField("industry")] public string industry { get; set; } [SolrField("body")] public string body { get; set; } [SolrField("adddate")] public DateTime adddate { get; set; } [SolrField("columns")] public string columns { get; set; } [SolrField("sorts")] public string sorts { get; set; } [SolrField("url")] public string url { get; set; } [SolrField("orderColumn")] public string orderColumn { get; set; } }}
SolrUniqueKey對應solr的唯一鍵,SolrField對應接收的字段
(2) 創建Global.asax加入如下代碼
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Security;using System.Web.sessionState;using SolrNet;namespace WebApplication5{ public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { Startup.Init<Article>("http://192.168.0.14:8080/solr/collection1"); } protected void Session_Start(object sender, EventArgs e) { } protected void Application_BeginRequest(object sender, EventArgs e) { } protected void Application_AuthenticateRequest(object sender, EventArgs e) { } protected void Application_Error(object sender, EventArgs e) { } protected void Session_End(object sender, EventArgs e) { } protected void Application_End(object sender, EventArgs e) { } }}
引用using SolrNet;
Startup.Init<Article>("http://192.168.0.14:8080/solr/collection1"); 請求solr服務器的地址
(3)我們開始使用solrnet,創建一個aspx頁面,先看代碼在然后再解釋每個方法的含義
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using SolrNet;using SolrNet.Commands.Parameters;using System.Text;using System.Data;using System.Text.RegularExpressions;using Microsoft.Practices.ServiceLocation;namespace WebApplication5{ public partial class _Default : System.Web.UI.Page { public DataTable Result = new DataTable(); public int total; public int maxNum; public int pageNum = 36; protected void Page_Load(object sender, EventArgs e) { Search("上海", "北京,上海", "電力", "項目", 1, "0"); } public void Search(string keyWord, string area, string industry, string columns, int start, string time) { //定義solr ISolrOperations<Article> solr = ServiceLocator.Current.GetInstance<ISolrOperations<Article>>(); //建立排序,條件. QueryOptions options = new QueryOptions(); options.Rows = pageNum;//數據條數 options.Start = start;//開始項 //創建查詢條件 var qTB = new SolrQueryByField("title", keyword); //創建條件集合 List<ISolrQuery> query = new List<ISolrQuery>(); //添加條件 query.Add(qTB); //查詢地區,多個地區,這里用 ,號隔開,例 北京,上海,杭州 if (area != "") { //創建集合存存儲地區 List<ISolrQuery> ar = new List<ISolrQuery>(); string[] ares = area.Split(new char[] { ',' }); foreach (string a in ares) { //存儲地區 ar.Add(new SolrQueryByField("area", a)); } //創建地區之間的關系,是OR還是AND var qArea = new SolrMult 我們來一段段分析上面的代碼
創建solr實例,最終使用這個去執行命令
ISolrOperations<Article> solr = ServiceLocator.Cu
新聞熱點
疑難解答