• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于.net構(gòu)建海量非結(jié)構(gòu)文本與用戶行為協(xié)同的搜索引擎研究

      2018-08-15 10:01李德華鞏宇張自鋒楊小龍
      軟件工程 2018年5期
      關(guān)鍵詞:用戶行為搜索引擎

      李德華 鞏宇 張自鋒 楊小龍

      摘 要:從全文檢索的原理出發(fā),介紹搜索引擎和全文檢索的索引原理和機(jī)制,通過實(shí)例講述如何創(chuàng)建lucene索引、如何管理索引。通過索引的目錄結(jié)構(gòu)和內(nèi)容結(jié)構(gòu)的分析,討論了基于.net平臺如何使用lucene的索引功能創(chuàng)建搜索引擎。目前多數(shù)項(xiàng)目采用Java、C++等為開發(fā)語言,構(gòu)建索引器。本文提出基于.net的索引器的設(shè)計(jì)實(shí)例分析,解決了在.net開發(fā)環(huán)境下,海量非結(jié)構(gòu)文本搜索的問題。結(jié)合用戶行為理論優(yōu)化搜索引擎的用戶體驗(yàn),增加用戶粘性,提高用戶的忠誠度。

      關(guān)鍵詞:搜索引擎;索引器;.net;Lucene;用戶行為

      中圖分類號:TP315 文獻(xiàn)標(biāo)識碼:A

      Abstract:Starting from the principle of full-text search,this paper introduces the indexing principle and mechanism of search engine and full-text search.It describes how to create a lucene index and how to manage the index through an example.Through the analysis of the index's directory structure and content structure,we discussed how to use lucene's indexing function to create a search engine based on .net platform.At present,most projects use Java,C++,etc.as the development language and build indexers.This paper presents a design example analysis of a net-based indexer and solves the problem of massive unstructured text search under .net development environment.Combining user behavior theory to optimize the user experience of search engines,increase user stickiness and increase user loyalty.

      Keywords:search engine;indexer; .net;Lucene;user behavior

      1 引言(Introduction)

      搜索引擎技術(shù)發(fā)展迅速,各大公司相繼推出自己的產(chǎn)品,包括百度搜索、360搜搜、搜狗搜索、google搜索、bing搜索等,各個產(chǎn)品之間競爭激烈,因此如何提高用戶的體驗(yàn),保證產(chǎn)品的熱度,在競爭中取得更多的市場分額,這成為了許多專家和學(xué)者研究的焦點(diǎn)。許多專家經(jīng)過研究,提出結(jié)合用戶的行為理論和用戶行為屬性,優(yōu)化數(shù)據(jù)的索引操作(Indexing),把用戶的行為優(yōu)化到搜索引擎索引器中。

      2 搜索引擎與用戶行為理論(Search engine and

      user behavior theory)

      搜索引擎是一項(xiàng)以互聯(lián)網(wǎng)信息為基礎(chǔ),進(jìn)行信息資源的搜集、發(fā)現(xiàn)、理解、提取和處理的系統(tǒng)工程,為用戶提供信息搜索服務(wù),并對信息進(jìn)行基于多種算法的理解和解析,為用戶提供個性化的信息服務(wù),是人們獲取信息的工具,搜索引擎已經(jīng)成為人們進(jìn)入Internet門戶。用戶行為理論是指用戶獲取、使用相關(guān)的物品或服務(wù),所產(chǎn)生的各項(xiàng)活動,用戶對使用對象的認(rèn)知和使用,有一個完整的過程。那么用戶行為理論與搜索引擎研究的結(jié)合,具體可以分為幾個階段,認(rèn)知、熟悉、試用、使用、忠誠。具體內(nèi)容如表1。

      搜索引擎系統(tǒng)一般由搜索器(Crawler)、索引器(Indexer)、檢索器(Searcher)和用戶接口(UI,User Interface)四個部分組成。本文主要從索引器入手,結(jié)合用戶行為理論和用戶行為參考指標(biāo),進(jìn)行索引的優(yōu)化。

      2.1 基于用戶屬性優(yōu)化索引器

      索引器對獲取的網(wǎng)頁進(jìn)行深度分析與挖掘,提取其中重要的信息,包括網(wǎng)頁的標(biāo)題、關(guān)鍵詞、生成時間等。建立網(wǎng)頁之間的相關(guān)關(guān)系,生成倒排文檔等。在建設(shè)索引器過程中,為了提高用戶的滿意度,將結(jié)合用戶的行為理論,從用戶角度出發(fā),提取更多與用戶相關(guān)的屬性優(yōu)化索引內(nèi)容。其中包括網(wǎng)頁的地址屬性、時間屬性、人物屬性等。

      索引模塊由信息提取模塊、中文分詞模塊、網(wǎng)頁提純模塊和索引模塊組成。按照一定的方法對網(wǎng)頁文檔進(jìn)行索引,形成索引數(shù)據(jù)庫。首先是提取網(wǎng)頁的純文本頁面,去除其中的HTML頁面,然后采用分詞算法,實(shí)現(xiàn)文本內(nèi)容的切分,提取網(wǎng)頁的關(guān)鍵屬性,其效果如圖1所示。

      根據(jù)文本的內(nèi)容,提取其中的關(guān)鍵屬性,結(jié)合用戶的行為理論,優(yōu)化索引器。當(dāng)用戶登錄搜索界面的時候,系統(tǒng)獲取用戶的IP,進(jìn)而獲得用戶的地址,那么用戶的搜索結(jié)果,會自動根據(jù)地址的匹配,優(yōu)化展示的順序。同時根據(jù)用戶的瀏覽結(jié)果推測用戶的喜好,進(jìn)而優(yōu)化搜索結(jié)果的排序。

      2.2 索引基本結(jié)構(gòu)

      以Lucene為例介紹索引的基本結(jié)構(gòu),Lucene作為一個優(yōu)秀的全文檢索引擎,其系統(tǒng)結(jié)構(gòu)具有強(qiáng)烈的面向?qū)ο筇卣鳌ucene是一個建立索引的框架,在這個框架下用戶可以根據(jù)需要進(jìn)行大量的二次開發(fā),提高用戶行為相關(guān)的各種屬性的權(quán)重。Lucene定義了一個與平臺無關(guān)的索引文件格式,建立用戶行為相關(guān)的索引文件。

      以下將討論Lucene系統(tǒng)的結(jié)構(gòu)組織,并給出系統(tǒng)結(jié)構(gòu)與源碼組織圖,如圖2所示。

      說明:Lucene的最初版本是Java,經(jīng)過很多技術(shù)達(dá)人的努力,開放出了的基于.net的索引器。

      處理原始網(wǎng)頁的目的是去除網(wǎng)頁中無關(guān)的HTML標(biāo)簽,只取出其中有用的信息。把HtmlParser引用到搜索引擎項(xiàng)目中,效果如圖5所示。

      索引器的核心代碼文件ClassIndex.cs,代碼如下:

      nSearch.FS.oneHtmDat newDat=nSearch.FS.ClassFSMD.GetOneDat(i);

      //生成標(biāo)題

      nSearch.DebugShow.ClassDebugShow.WriteLineF("測試newDat:"+newDat.url.ToString()+"信息");

      WebRequest geturlcontent=WebRequest.Create(newDat.url);

      WebResponse getresponse=geturlcontent.GetResponse();

      Stream stream1=getresponse.GetResponseStream();

      StreamReader read=new StreamReader(stream1,

      Encoding.GetEncoding("gb2312"));

      string readcontent=read.ReadToEnd();

      Match TitleMatch=Regex.Match(readcontent,"([^<]*)",RegexOptions.IgnoreCase|RegexOptions.Multiline);

      string ti=TitleMatch.Groups[1].Value;

      read.Dispose();

      read.Close();

      nSearch.DebugShow.ClassDebugShow.WriteLineF("標(biāo)題"+ti.ToString());

      //生成body

      System.IO.Stream stream2=new

      以上實(shí)現(xiàn)了網(wǎng)頁代碼中標(biāo)題和網(wǎng)頁主體的提取。

      3.3 分詞設(shè)計(jì)

      中文分詞[8](Chinese Word Segmentation)指的是根據(jù)一定的算法對文章中的句子、詞語進(jìn)行識別,切分成多個詞語單元。分詞就是將連續(xù)的字序列按照一定的規(guī)范重新組合成詞序列的過程。在英文的行文中,句子中詞語之間以空格進(jìn)行區(qū)分,而中文只是字、句和段能通過明顯的分界符來簡單劃界,詞之間是沒有明顯劃分的,雖然英文也同樣存在短語的劃分問題,在詞的劃分方面中文比之英文要復(fù)雜的多、困難的多,另外中文也有一詞多意的現(xiàn)象,因此必須采用多種不停的算法,包括貝葉斯分類、神經(jīng)網(wǎng)絡(luò)識別等。

      在提取了標(biāo)題和網(wǎng)頁內(nèi)容后,必須利用分詞系統(tǒng)進(jìn)行詞語的切分,然后才能用于建立倒排文檔。提供分詞工具的單位非常之多,有知名的研究機(jī)構(gòu)也有互聯(lián)網(wǎng)公司,根據(jù)項(xiàng)目的需要選擇好的開發(fā)工具非常重要,本文根據(jù)需要,選擇了中科院開發(fā)的c#版本分詞系統(tǒng),而放棄了Lucene提供的中文分詞工具[9](全稱是Lucene.Net.Analysis.China.dll),因?yàn)樵谑褂肔ucene的分詞工具過程中,發(fā)現(xiàn)Lucene.Net.Analysis分詞效果一般,并且已經(jīng)被封裝,相比中科院的分詞系統(tǒng)缺乏靈活性,中科院的分詞系統(tǒng)全開源,可以進(jìn)行修改,特別是詞典可以自由進(jìn)行修改。本文采用中科院的分詞系統(tǒng),詞典部分使用的是簡化版本[10]。在分詞的過程中,結(jié)合用戶的行為理論,把用戶相關(guān)的用戶屬性進(jìn)行合理切分,并且作為建立倒排文檔的關(guān)鍵詞。

      把分詞系統(tǒng)導(dǎo)入到項(xiàng)目中的nSearch.Index文件中為分詞系統(tǒng)做好準(zhǔn)備,如圖6所示。

      reference library

      在ClassIndex.cs建立分詞的分析器,代碼如下所示:

      //定義分析器

      Analyzer KTDAnalyzer=new KTDictSegAnalyzer(wordPath);

      //PerFieldAnalyzerWrapper可以對不同的Field進(jìn)行不同的分析

      PerFieldAnalyzerWrapper wrapper=new PerFieldAnalyzerWrapper(KTDAnalyzer);

      wrapper.AddAnalyzer("ID",KTDAnalyzer);

      wrapper.AddAnalyzer("News_Url",KTDAnalyzer);

      wrapper.AddAnalyzer("News_Date",KTDAnalyzer);

      //創(chuàng)建IndexWriter

      writer=new IndexWriter(indexDirectory,wrapper,true);

      至此建立索引的準(zhǔn)備工作基本完成。

      3.4 索引創(chuàng)建

      當(dāng)所有的原始網(wǎng)頁都處理好之后,就可以建立相應(yīng)的索引,本實(shí)例為索引庫建立了一個庫E:\DATATEST\Index,用來保存全部的索引文件。索引建立流程[11]如圖7所示。

      首先將Lucene導(dǎo)入項(xiàng)目,效果如圖8所示。

      在引用了Lucene后在ClassIndex.cs中即可建立document,索引建立后會寫到硬盤中,具體代碼如下:

      Lucene.Net.Documents.Document doc=new Lucene.Net.Documents.Document();

      doc.Add(new Field("ID",i.ToString() ?? "",F(xiàn)ield.Store.YES,F(xiàn)ield.Index.UN_TOKENIZED));

      doc.Add(new Field("News_Title",ti,F(xiàn)ield.Store.YES,F(xiàn)ield.Index.TOKENIZED,F(xiàn)ield.TermVector.NO));//標(biāo)題A

      doc.Add(new Field("News_Body",body,F(xiàn)ield.Store.YES,F(xiàn)ield.Index.TOKENIZED,F(xiàn)ield.TermVector.NO));//簡要顯示C

      doc.Add(new Field("News_Url",newDat.url,F(xiàn)ield.Store.YES,F(xiàn)ield.Index.NO,F(xiàn)ield.TermVector.NO));//url

      doc.Add(new Field("News_Date",time,F(xiàn)ield.Store.YES,F(xiàn)ield.Index.NO,F(xiàn)ield.TermVector.NO));//

      以上就是一個索引建立的完整過程。

      隨著信息技術(shù)的發(fā)展和計(jì)算機(jī)深入廣泛的應(yīng)用,人們對全文檢索的動態(tài)性要求變得十分的迫切,并且進(jìn)一步還要求根據(jù)用戶的需求進(jìn)行個性化。應(yīng)該說是全文索引的動態(tài)性是未來的一個必然的趨勢。實(shí)現(xiàn)索引的動態(tài)更新的一個很大的難題在于更新時間復(fù)雜度非線性。動態(tài)全文數(shù)據(jù)庫索引的創(chuàng)建效率非常高。由于倒排表模型在索引的創(chuàng)建效率上高于其他的模型,且應(yīng)用也較為成熟,因此本設(shè)計(jì)主要也是使用倒排表模型的動態(tài)索引創(chuàng)建算法。在本設(shè)計(jì)中采用了一種準(zhǔn)動態(tài)全文索引的更新的策略。

      4 結(jié)論(Conclusion)

      研究了全文檢索索引器中涉及的幾個關(guān)鍵技術(shù),其中有中文分詞技術(shù),索引結(jié)構(gòu)形式及其工作原理。建立了一個基于中文檢索的索引器系統(tǒng)。在本文中系統(tǒng)的討論了全文檢索索引庫所涉及的各種技術(shù)。在融合用戶行為理論的要求下,必須對系統(tǒng)進(jìn)行的各個模塊進(jìn)行深度優(yōu)化,提升用戶的滿意度。在實(shí)際的應(yīng)用中內(nèi)存分配、分頁管理、文件系統(tǒng)管理、虛擬內(nèi)存技術(shù)、內(nèi)存映射、cache管理等各種相關(guān)的技術(shù)都提高索引創(chuàng)建和更新的效率[12]。如何在這些方面對索引庫進(jìn)行進(jìn)一步的優(yōu)化,將是未來研究的工作和挑戰(zhàn)。利用本文設(shè)計(jì)的索引器,可以應(yīng)用于海量文本數(shù)據(jù)庫中,建立資料的索引,提供快速的查找功能。

      參考文獻(xiàn)(References)

      [1] 賈捷.基于MVC+Lucene.Net框架下的垂直搜索引擎研究與設(shè)計(jì)[D].吉林大學(xué),2015.

      [2] 孫藝珍,季小迪,張京濤.基于.Net的全文搜索引擎設(shè)計(jì)與實(shí)現(xiàn)[J].西安科技大學(xué)學(xué)報,2014,34(06):701-706.

      [3] 王莉.基于ASP.NET搜索引擎模型的實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2011(11):199-201;205.

      [4] 張文生,孫永忠.ASP.NET網(wǎng)站搜索引擎優(yōu)化方法研究[J].信息技術(shù),2010,34(03):146-148.

      [5] 蔡建超,郭一平,王亮.基于Lucene.Net校園網(wǎng)搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)[U].計(jì)算機(jī)技術(shù)與發(fā)展,2006(11):73-80.

      [6] 陰愛英.基于線程并行計(jì)算的Apriori算法[J].西安科技大學(xué)學(xué)報,2014,34(1):71-74.

      [7] 戚艷軍,龔尚福.用戶角色的XML動態(tài)加密方法研究[J].西安科技大學(xué)學(xué)報,2012,32(1):101-106.

      [8] 劉磊安,符志強(qiáng).基于Lucene.net網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識與設(shè)計(jì),2010,6(8):1870-1878.

      [9] 馬俊.基于正則表達(dá)式技術(shù)的信息搜集引擎應(yīng)用研究[D].成都:電子科技大學(xué),2006.

      [10] Otis Gospodnetic,Erik Hatcher.Lucene in action[M]Beijing: Publishing House of Electronics Industry,2007:100-105.

      [11] 武毅.基于Lucene .Net的全文檢索研究與應(yīng)用[D].長沙:國防科學(xué)技術(shù)大學(xué),2011.

      [12] Chih-Hao Tasi.MMSEG:a word identification system formandarin Chinese text based on two variants of the maximum matching algorithm[OL].http://technology.chtsai.org/mmseg/,2013.

      作者簡介:

      李德華(1985-),男,碩士,工程師.研究領(lǐng)域:電網(wǎng)調(diào)峰調(diào)頻技術(shù),企業(yè)信息化.

      鞏 宇(1982-),男,碩士,工程師.研究領(lǐng)域:電網(wǎng)調(diào)峰調(diào)頻技術(shù),企業(yè)信息化.

      張自鋒(1988-),男,碩士,工程師.研究領(lǐng)域:信息技術(shù)情報,企業(yè)信息化.

      楊小龍(1982-),男,碩士,工程師.研究領(lǐng)域:電網(wǎng)調(diào)峰調(diào)頻技術(shù),企業(yè)信息化.

      猜你喜歡
      用戶行為搜索引擎
      社會化媒體用戶使用動機(jī)與行為探析
      新媒體用戶行為模式分析
      基于用戶行為分析的智能家居系統(tǒng)的研究與設(shè)計(jì)
      網(wǎng)絡(luò)搜索引擎亟待規(guī)范
      Nutch搜索引擎在網(wǎng)絡(luò)輿情管控中的應(yīng)用
      基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
      廣告主與搜索引擎的雙向博弈分析
      西藏| 崇信县| 密云县| 新民市| 壶关县| 呼和浩特市| 洛阳市| 拉萨市| 绿春县| 明溪县| 台州市| 阿拉尔市| 中山市| 沧源| 新沂市| 水城县| 福泉市| 宁波市| 泌阳县| 澄城县| 莎车县| 嘉祥县| 鄄城县| 阳新县| 宜阳县| 杭锦旗| 时尚| 南涧| 东兴市| 寿阳县| 白银市| 西安市| 泽普县| 南乐县| 秦皇岛市| 留坝县| 道真| 清流县| 顺平县| 曲沃县| 富源县|