成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server數據挖掘規則實現商品推薦2

大數據
假如你有一個購物類的網站,那么你如何給你的客戶來推薦產品呢?這個功能在很多電商類網站都有,那么,通過SQL Server Analysis Services的數據挖掘功能,你也可以輕松的來構建類似的功能。

此篇在上一篇已經構建好挖掘模型的基礎之上,介紹如何構建服務接口。

編寫服務接口的方法很多,比如使用WCF。為了簡便,這里直接使用ASP.NET Web Services。

將挖掘模型的具體查詢的實現部分寫到Web服務代碼中,主要是考慮到代碼分層降低耦合性。另外這部分邏輯通過服務的方式來暴露接口,可以方便其它任何平臺來進行調用,比如ASP.NET, Winform, WPF或者其它基于java的技術框架等。Web服務最主要的部分是XML,一個服務接口往往就是一個URL地址,客戶端程序通過向這個地址發送xml請求的方式,來獲取服務端代碼的響應,結果再以xml的方式返回回來。那么既然來回通信的都是xml數據,是否意味這還要手動寫代碼來序列化和反序列化xml數據呢?這里面又涉及到一個SOAP的概念,這是一個在10年前很火的概念,簡單對象訪問協議。通過這個SOAP協議,客戶端程序可以知道要訪問一個Web服務,應該發送什么樣的xml數據,以及收到服務端xml的數據之后,本地再如何解析這些數據。基于這樣一個方式,Visual Studio中,當你引用一個服務的時候,它就會根據這個協議,在你本地生成若干代理類,這樣在你調用遠程的一個Web服務的時候,你就會感覺像是在調用本地里的一個類的方法一樣方便。

筆者注:如果你用Winform和ASP.NET等,那么你也可以選擇直接在代碼里訪問挖掘模型的數據,但是如果是其它平臺,比如Win 8 App, silverlight和flash等,它們是無法直接和數據源進行通信的,所以只能通過服務的方法來訪問。

本篇就是要編寫這樣一個服務接口,這個服務接受客戶已經購買的商品列表信息,然后根據這些信息來向用戶推薦其它商品。

服務的核心邏輯是根據傳送過來的商品列表,來動態的去拼DMX語句。在上一篇中提到的那個DMX語句,這里主要以它為"模版"。

根據上一篇的講解,我們知道需要變化的就是SELECT UNION SELECT的部分,一條商品對應一個SELECT。

還有一個需要介紹的東西是ADOMD.NET,這個名字你看上去可能感覺有些面熟,沒錯,你肯定用過ADO.NET,還記得經典方式操作數據庫的步驟嗎?新建Connection, Command然后DataReader或者其它方式來接收數據。ADOMD.NET就是專門用來訪問分析服務用的,由于它跟ADO.NET一樣都集成自同一接口,所以你可以找到熟悉的Connection和Command對象,而接收對象的除了DataReader外,還有跟DataSet相對應的CellSet對象。

傳統的分析服務是包含多維模型和數據挖掘的,所以在ADOMD.NET下,可以拋MDX(查多維數據集用的)和DMX(查挖掘模型用的)。這里我們用的數據訪問接口就是ADOMD.NET。

  1. SELECT FLATTENED 
  2. PredictAssociation([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,3) 
  3. FROM 
  4. [Association] 
  5. NATURAL PREDICTION JOIN 
  6. SELECT (SELECT 'Touring Tire' AS [Model] 
  7. UNION 
  8. SELECT 'Touring Tire Tube' AS [Model] 
  9. AS [v Assoc Seq Line Items]) AS t 

確認好以上邏輯之后,我們開始構建Web服務。

這里我們使用Visual Studio 2012來編寫服務。跟上一篇不同,上一篇為了編寫一個SQL Server 2012的分析服務項目,我們用的是SQL Server Data Tools,這個實際上就是Visual Studio 2010的一個Shell。而那個地方為什么用的版本是2010而不是2012?這里面有一個SQL Server和Visual Studio版本的一個對應的關系。

SQL Server版本

對應的Visual Studio Shell版本

2000

2005

2005

2008

2008

2012

2010

2012的下一個版本

2012

可以看到主要還是根據兩個產品系列的版本發布有關系。所以這里就有一個地方需要留意,如果你的機器上同時安裝了Visual Studio 2012和SQL Server 2012,那么當你打開一個類似上一篇中建立的分析服務項目的時候,不要默認雙擊打開項目文件,因為系統會用Visual Studio 2012 (不是應該與其對應的2010)來打開你的項目,然后提示你將項目升級到2012。不用想,對應Visual Studio 2012 Shell的SQL Server版本還沒發布呢,所以即使升級了最后也一定是失敗。

下面言歸正傳,打開Visual Studio 2012。點擊菜單欄FILE->New Project。

項目類型選擇ASP.NET Empty Web Application。

點擊OK新建一個新ASP.NET項目。

在Solution Explorer中,右鍵項目名稱,點Add->New Item。

在Add New Item中,選擇Web Service。然后點Add。

然后可以看到系統自動生成的測試用的服務代碼。

下面首先添加ADOMD.NET引用。右鍵項目目錄,選擇Add Reference。

ADOMD.NET組件不會默認出現在這里。需要點擊Browse手動去找。

通常ADOMD.NET組件的位置是位于這個目錄下:

C:\Program Files\Microsoft.NET\ADOMD.NET\110

找到Microsoft.AnalysisServices.AdomdClient.dll,點OK。

可以看到ADOMD.NET組件已經被添加到引用目錄下。

然后,回到Web服務代碼界面,在代碼中using這個庫的引用。

然后為服務編寫代碼,首先定義一個類,服務的結果將以這個類的結構返回。

 

  1. public class ModelResult 
  2. public string ModelName { getset; } 
  3. public double Support { getset; } 
  4. public double Probility { getset; } 

 

定義好這個類之后,再編寫服務代碼,這里直接貼出來:

 

  1. [WebMethod] 
  2. public List<ModelResult> GetModelResult(List<string> ModelList) 
  3. List<ModelResult> result = new List<ModelResult>(); 
  4. bool FirstOne = true
  5. //Build DMX query 
  6. StringBuilder sb = new StringBuilder(); 
  7. sb.AppendLine("SELECT FLATTENED"); 
  8. sb.AppendLine("PredictAssociation([Association].[v Assoc Seq Line Items],INCLUDE_STATISTICS,3)"); 
  9. sb.AppendLine("FROM"); 
  10. sb.AppendLine("[Association]"); 
  11. sb.AppendLine("NATURAL PREDICTION JOIN"); 
  12. sb.AppendLine("("); 
  13. foreach (string item in ModelList) 
  14. if (FirstOne == true
  15. sb.AppendLine("SELECT (SELECT '" + item + "' AS [Model]"); 
  16. FirstOne = false
  17. else 
  18. sb.AppendLine("UNION"); 
  19. sb.AppendLine("SELECT '" + item + "' AS [Model]"); 
  20. sb.AppendLine(") AS [v Assoc Seq Line Items]) AS t"); 
  21. AdomdConnection conn = new AdomdConnection(); 
  22. conn.ConnectionString = "Provider=MSOLAP.3;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=MultidimensionalProject1;Data Source=."
  23. conn.Open(); 
  24. AdomdCommand comm = new AdomdCommand(sb.ToString(), conn); 
  25. AdomdDataReader dr = comm.ExecuteReader(); 
  26. //Read result 
  27. while (dr.Read()) 
  28. ModelResult mr = new ModelResult(); 
  29. mr.ModelName = dr[0].ToString(); 
  30. mr.Support = Convert.ToDouble(dr[1]); 
  31. mr.Probility = Convert.ToDouble(dr[2]); 
  32. result.Add(mr); 
  33. conn.Close(); 
  34. return result; 

留意貼出的這段代碼第一行,有一個[WebMethod],Web服務的方法跟一個類的傳統方法區別就在這里,只有在方法前面打上這個標記才會被系統認為是一個Web服務方法發布出去。

代碼中先根據上一篇提到的DMX語句的查詢"模版",中簡通過一個foreach循環來動態構建SELECT UNION SELECT部分。最后通過Connection和Command對象以及DataReader方法來讀取結果,并且把其加載到類里。

然后,為了方便測試,再加一個測試服務方法:

 

  1. [WebMethod] 
  2. public List<ModelResult> GetModelResultTest(string ModelSingle) 
  3. List<string> ModelList = new List<string>(); 
  4. ModelList.Add(ModelSingle); 
  5. return GetModelResult(ModelList); 

 

這個方法實際上還是調用了剛才建立的服務方法,只不過它只傳遞了一個商品過來,在這里打包成一個List后丟掉那個方法里。

這樣,在ASP.NET自帶的服務瀏覽界面中就可以測試我們剛才編寫的方法了。右鍵asmx文件點View in Browser。

然后可以看到系統自動為服務建立的簡單測試頁面。

這里點擊GetModelResultTest方法。

在參數值中輸入'Touring Tire',點"調用"。

最后,就可以看到服務返回的結果信息。信息的格式是通過xml的,你無需去解析它,通過前面提到的SOAP協議,系統會為你建立相應的本地代理類。

至此,為挖掘模型編寫的服務層代碼就編寫完畢了。下一篇將建立一個應用程序來調用這個服務從而實現一個簡單的商品推薦功能。

原文鏈接:http://www.cnblogs.com/aspnetx/archive/2013/02/24/2924091.html

【編輯推薦】

1.SQL Server數據挖掘規則實現商品推薦1

責任編輯:彭凡 來源: 博客園
相關推薦

2013-02-25 10:33:36

2011-07-25 16:05:27

SQL SERVER數Web路徑流挖掘

2011-08-11 16:16:26

SQL Server數據挖掘

2009-02-16 13:21:25

數據挖掘SQL Server SQL Server

2010-07-05 17:55:26

SQL Server更

2010-07-12 12:41:16

SQL Server

2009-04-13 10:15:24

SQLServer 2005數據挖掘

2011-07-25 14:56:00

SQL SERVER數

2011-07-25 15:17:50

SQL SERVER數

2010-11-11 14:05:17

SQL Server排

2009-07-03 19:58:51

SQL Server2

2011-04-01 12:19:21

SQL Server商業智能

2010-07-08 11:15:37

SQL Server數

2010-11-11 14:14:52

SQL Server排

2010-07-21 10:27:49

SQL Server

2009-08-05 10:00:04

數據挖掘算法SQL Server

2010-07-21 10:05:29

SQL Server排

2010-07-12 09:10:05

SQL Server數

2009-02-16 09:35:19

業務規則鏈接SQL Server

2017-03-02 10:49:37

推薦算法原理實現
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美在线精品一区 | 正在播放亚洲 | 欧美午夜精品理论片a级按摩 | 91九色porny首页最多播放 | 女朋友的闺蜜3韩国三级 | 免费黄色录像视频 | 精品视频在线一区 | 国产精品一区二区不卡 | 亚洲成人黄色 | 一区二区三区在线看 | 亚洲精品成人免费 | 中文字幕欧美日韩一区 | 日本综合在线观看 | 久久香蕉精品视频 | 欧美激情一区二区三区 | 中文字幕一区二区三区在线视频 | 秋霞av国产精品一区 | 欧美天堂在线观看 | 在线观看亚洲精品视频 | 国产成人啪免费观看软件 | 亚洲另类春色偷拍在线观看 | 91九色视频 | 欧美综合国产精品久久丁香 | 亚洲高清视频一区二区 | 欧美日韩黄色一级片 | 亚洲日产精品 | 精品成人av| 亚洲精品国产电影 | 韩日精品一区 | 91亚洲国产成人久久精品网站 | 色婷婷在线视频 | 国产精品一区二区在线 | 成人欧美一区二区三区黑人孕妇 | 一区二区三区视频播放 | 激情六月天 | 国产在线a视频 | 精品久久影院 | 久久精品91久久久久久再现 | 欧美aaa| 草逼网站 | 在线视频成人 |