999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

李德華 鞏宇 張自鋒 楊小龍

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

關(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)品之間競爭激烈,因此如何提高用戶的體驗,保證產(chǎn)品的熱度,在競爭中取得更多的市場分額,這成為了許多專家和學(xué)者研究的焦點。許多專家經(jīng)過研究,提出結(jié)合用戶的行為理論和用戶行為屬性,優(yōu)化數(shù)據(jù)的索引操作(Indexing),把用戶的行為優(yōu)化到搜索引擎索引器中。

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

user behavior theory)

搜索引擎是一項以互聯(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)生的各項活動,用戶對使用對象的認(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頁面,然后采用分詞算法,實現(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)具有強烈的面向?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引用到搜索引擎項目中,效果如圖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

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

3.3 分詞設(shè)計

中文分詞[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)行詞語的切分,然后才能用于建立倒排文檔。提供分詞工具的單位非常之多,有知名的研究機構(gòu)也有互聯(lián)網(wǎng)公司,根據(jù)項目的需要選擇好的開發(fā)工具非常重要,本文根據(jù)需要,選擇了中科院開發(fā)的c#版本分詞系統(tǒng),而放棄了Lucene提供的中文分詞工具[9](全稱是Lucene.Net.Analysis.China.dll),因為在使用Lucene的分詞工具過程中,發(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)入到項目中的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)的索引,本實例為索引庫建立了一個庫E:\DATATEST\Index,用來保存全部的索引文件。索引建立流程[11]如圖7所示。

首先將Lucene導(dǎo)入項目,效果如圖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ā)展和計算機深入廣泛的應(yīng)用,人們對全文檢索的動態(tài)性要求變得十分的迫切,并且進(jìn)一步還要求根據(jù)用戶的需求進(jìn)行個性化。應(yīng)該說是全文索引的動態(tài)性是未來的一個必然的趨勢。實現(xiàn)索引的動態(tài)更新的一個很大的難題在于更新時間復(fù)雜度非線性。動態(tài)全文數(shù)據(jù)庫索引的創(chuàng)建效率非常高。由于倒排表模型在索引的創(chuàng)建效率上高于其他的模型,且應(yīng)用也較為成熟,因此本設(shè)計主要也是使用倒排表模型的動態(tài)索引創(chuàng)建算法。在本設(shè)計中采用了一種準(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)化,提升用戶的滿意度。在實際的應(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è)計的索引器,可以應(yīng)用于海量文本數(shù)據(jù)庫中,建立資料的索引,提供快速的查找功能。

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

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

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

[3] 王莉.基于ASP.NET搜索引擎模型的實現(xiàn)[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è)計與實現(xiàn)[U].計算機技術(shù)與發(fā)展,2006(11):73-80.

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

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

[8] 劉磊安,符志強.基于Lucene.net網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)[J].電腦知識與設(shè)計,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è)信息化.

猜你喜歡
搜索引擎
Chrome 99 Canary恢復(fù)可移除預(yù)置搜索引擎選項
網(wǎng)絡(luò)搜索引擎亟待規(guī)范
Nutch搜索引擎在網(wǎng)絡(luò)輿情管控中的應(yīng)用
基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
廣告主與搜索引擎的雙向博弈分析
基于Lucene搜索引擎的研究
知識漫畫
百科知識(2012年11期)2012-04-29 08:30:15
一種自反饋式元搜索系統(tǒng)的設(shè)計
搜索引擎,不止有百度與谷歌
搜索,也要“深搜熟濾”
主站蜘蛛池模板: 国产区精品高清在线观看| 国产精品丝袜视频| 欧美国产在线一区| 色婷婷国产精品视频| 日本午夜精品一本在线观看| 久久免费成人| 手机在线国产精品| 一本大道视频精品人妻| 黄色片中文字幕| 国产欧美中文字幕| 亚洲视频免费在线| 最新亚洲人成无码网站欣赏网| 狠狠躁天天躁夜夜躁婷婷| 久久国产黑丝袜视频| 99re在线观看视频| 中文字幕免费视频| 久久一色本道亚洲| 亚洲乱强伦| 久久亚洲国产最新网站| 亚洲欧洲自拍拍偷午夜色| 亚洲精品无码在线播放网站| 国产精品3p视频| 中文成人无码国产亚洲| 成人国产精品网站在线看| 国产在线98福利播放视频免费| 国产区在线观看视频| 国产精品夜夜嗨视频免费视频| 九九九精品成人免费视频7| 手机在线国产精品| 67194在线午夜亚洲| 国产成人亚洲欧美激情| 亚洲另类国产欧美一区二区| 中文字幕日韩久久综合影院| 中文字幕无码制服中字| 精品国产一区二区三区在线观看 | 99精品国产自在现线观看| 欧美国产在线精品17p| 国产国拍精品视频免费看| 九九视频免费在线观看| 国产免费羞羞视频| 在线看AV天堂| 91成人在线观看| 午夜色综合| 无码国产伊人| 亚洲视频在线网| 欧美性精品| 亚洲无码高清一区二区| 国产精品粉嫩| 国产成人亚洲精品色欲AV| 91黄色在线观看| 亚洲香蕉久久| 国产伦精品一区二区三区视频优播 | 国产美女精品一区二区| 亚洲制服丝袜第一页| 亚洲乱亚洲乱妇24p| 成人午夜免费观看| 在线欧美a| 日本91视频| 免费毛片全部不收费的| 欧美日韩午夜| 欧美国产日韩在线播放| 激情综合婷婷丁香五月尤物| 亚洲日本中文综合在线| 中文字幕欧美日韩| 国产成人8x视频一区二区| 欧美午夜精品| 欧美中出一区二区| 欧美 亚洲 日韩 国产| 67194亚洲无码| 久久久久无码精品| 在线国产91| 国产精品毛片一区视频播| 波多野结衣一区二区三区四区 | 美女被狂躁www在线观看| 99视频精品在线观看| 国产无套粉嫩白浆| 中国特黄美女一级视频| 免费一级成人毛片| 国模极品一区二区三区| 黄色网页在线观看| a毛片在线播放| 色老头综合网|