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

基于Lucene與Socket通信的中文搜索引擎的設(shè)計與實現(xiàn)

2017-04-14 08:56:55曹書林呂青松王一帆尹乾鄭新
電子測試 2017年7期
關(guān)鍵詞:搜索引擎用戶

曹書林,呂青松,王一帆,尹乾,鄭新

(北京師范大學(xué)信息科學(xué)與技術(shù)學(xué)院,北京,100875)

基于Lucene與Socket通信的中文搜索引擎的設(shè)計與實現(xiàn)

曹書林,呂青松,王一帆,尹乾,鄭新

(北京師范大學(xué)信息科學(xué)與技術(shù)學(xué)院,北京,100875)

Lucene是一個用Java寫的全文檢索引擎工具包,面向?qū)ο蠖鄬臃庋b,提供了一個低耦合、與平臺無關(guān)的、可進(jìn)行二次開發(fā)的全文檢索引擎架構(gòu),是這幾年最受歡迎的信息檢索程序庫;基于流式 Socket的網(wǎng)絡(luò)編程是設(shè)計網(wǎng)絡(luò)通信程序的一種有效方法。本文基于Lucene,采用中文分詞技術(shù),設(shè)計并實現(xiàn)了中文搜索引擎,同時應(yīng)用Java和PHP的Socket網(wǎng)絡(luò)編程技術(shù),實現(xiàn)了外網(wǎng)通過PHP網(wǎng)頁使用Lucene服務(wù)的功能。

中文搜索引擎;Lucene;Socket;中文分詞;java;PHP

0 引言

中文搜索引擎是指以網(wǎng)絡(luò)上的中文信息為主要對象,提供信息的自動收集、過濾、索引和檢索導(dǎo)航等服務(wù)的搜索引擎[1]。本文在Lucene的基礎(chǔ)上,進(jìn)行二次開發(fā),設(shè)計了搜索引擎核心的三大模塊:索引模塊,檢索模塊和web交互模塊,使用了中文分詞技術(shù)和關(guān)鍵詞高亮顯示技術(shù),實現(xiàn)了按關(guān)鍵詞快速搜索的界面友好的中文搜索引擎。

1 系統(tǒng)架構(gòu)設(shè)計

搜索引擎有基本的五大模塊,分別是信息采集,信息處理,索引,查詢和web交互。本文研究的是如何在信息處理分析的基礎(chǔ)上,建立一個完整的中文搜索引擎。所以該系統(tǒng)主要由三部分組成:建立索引庫,建立查詢服務(wù)器,建立web交互。

2 建立索引庫

Lucene將文本以倒排索引的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲,把文檔中提取出來的文字作為關(guān)鍵字[2],該倒排索引的基本結(jié)構(gòu)如下:

一個Document代表索引庫的一個文檔。要搜索的信息封裝成Document后通過IndexWriter寫入索引庫,這也是能返回給用戶作為搜索結(jié)果的獨立單元。

一個Document的組成是列,叫做Field。Document可以通過add方法根據(jù)需要增加列。

首先,Lucene使用分詞器對經(jīng)過預(yù)處理的純文本字節(jié)流進(jìn)行分詞;然后,調(diào)用Document類的add方法生成field實例,創(chuàng)建文檔;最后,使用IndexWriter將Document寫入索引庫。

2.1 中文分詞器的選擇

中文文本中詞和詞之間不像英文一樣存在邊界,所以中文分詞是一個專業(yè)處理中文搜索引擎中首先應(yīng)該面對的問題。

Lucene提供了一些分詞技術(shù),如按字符間空格進(jìn)行分詞的WhiteSpaceAnalyzer,按停用詞劃分的StopAnalyzer和使用更普遍的StandardAnalyzer,但是這些分詞方法都基本是針對西方文字開發(fā)的。以“我愛計算機(jī)”為例,使用StandardAnalyzer的分詞結(jié)果為“我/愛/計/算/機(jī)”,顯然這種單字劃分的方式是不準(zhǔn)確的。

在這里,我們采用SmartChineseAnalyzer分詞器,該分詞器專為中文設(shè)計,分詞效果“我/愛/計算機(jī)”比較理想,而且其本身在Lucene工具包中已經(jīng)實現(xiàn),所以本系統(tǒng)直接采用SmartChineseAnalyzer進(jìn)行分詞,解決了中文分詞問題。

2.2 創(chuàng)建索引庫

對文本進(jìn)行中文分詞等分析之后,就可以創(chuàng)建索引庫。核心代碼如下:

(1)創(chuàng)建Directory

(2)創(chuàng)建IndexWriter

(3)創(chuàng)建document對象

(4)為document添加field對象

(5)調(diào)用add方法,為document添加”class” filed,其他field類似

(6)使用完成后需要將writer進(jìn)行關(guān)閉

3 建立搜索查詢服務(wù)器

用戶在Web接口中輸入查詢的關(guān)鍵詞,然后發(fā)出搜索請求,由搜索查詢服務(wù)其解析查詢請求,通過Lucene的核心類IndexSearch完成搜索功能,經(jīng)過處理返回給用戶。本系統(tǒng)實現(xiàn)了如下兩個方面。

3.1 IndexSearch類實現(xiàn)搜索

用戶的搜索請求被分詞后,調(diào)用Lucene的檢索器IndexSearch進(jìn)行搜索,返回Topdocs類。核心代碼如下。

(1)創(chuàng)建Directory

(2)創(chuàng)建IndexReader

(3)根據(jù)IndexWriter創(chuàng)建IndexSearcher

(4)創(chuàng)建parser用來確定搜索的內(nèi)容,第二個參數(shù)表示搜索的域

(5)根據(jù)Searcher返回TopDocs

(6)根據(jù)TopDocs獲取ScoreDoc

(7)根據(jù)Searcher和ScoreDoc獲取搜索到的document對象

(8)根據(jù)document對象獲取查詢的字段

(9)關(guān)閉reader

(10)返回搜索結(jié)果

3.2 關(guān)鍵詞高亮顯示

自定義一個關(guān)鍵詞高亮顯示函數(shù)displayHTMLHight。核心代碼如下。

(1)設(shè)置中文分詞器為SmartChineseAnalyzer(2)設(shè)置高亮標(biāo)簽,可以自定義

(3)創(chuàng)建QueryScorer,對query進(jìn)行評分

(4)創(chuàng)建Fragmenter,對原始信息進(jìn)行切片處理,選擇最有價值的信息進(jìn)行高亮處理

(5)創(chuàng)建高亮分析器,根據(jù)formatter和scorer選擇最有價值的信息進(jìn)行高亮處理

4 建立Web交互

為了使用戶從服務(wù)器上獲取網(wǎng)頁內(nèi)容,還要客戶端與服務(wù)端進(jìn)程建立連接。UDP和TCP的通信采用Socket方法連接。本系統(tǒng)使用Socket流式通信,實現(xiàn)了客戶端和服務(wù)端的通訊功能。

4.1 Java實現(xiàn)服務(wù)器端

(1)首先創(chuàng)建一個ServerSocket對象,并為運(yùn)行該語句的計算機(jī)的指定端口建立一個監(jiān)聽服務(wù),這里綁定端口號為5678。

(2)為了隨時監(jiān)聽可能的客戶端請求,還要執(zhí)行語句Socket client=server.accept();使Server處于等待狀態(tài),直到捕獲到一個來自客戶端的請求,并返回一個用于與該客戶端通信的client對象。

(3)in為接受的客戶端請求

(4)out為將要返回客戶端的搜索結(jié)果

(5)調(diào)用IndexSearch函數(shù),返回搜索結(jié)果,并發(fā)送給客戶端

(6)刷新,提高IO吞吐率

(7)監(jiān)聽結(jié)束后,需要關(guān)閉client對象

4.2 PHP實現(xiàn)客戶端

為了使用戶可以通過外網(wǎng)使用搜索查詢服務(wù),本系統(tǒng)采用PHP的Socket通信。關(guān)鍵操作如下。

(1)首先,建立兩個變量來保存服務(wù)器的IP地址和端口。

(2)在服務(wù)器端可以使用set_time_out()函數(shù)來確保PHP在等待客戶端連接時不會超時.。

(3)使用socket_creat()函數(shù)創(chuàng)建一個Socket,這個函數(shù)返回一個Socket句柄,這個句柄將用在以后所有的函數(shù)中。其中“AF_INET”“SOCK_STREAM”“SOL_TCP”為指定創(chuàng)建//IPV4網(wǎng)絡(luò)協(xié)議的、流式的、TCP類型的Socket。

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_ TCP);

(4)通過socket_connet函數(shù)綁定Socket到指定的IP和端口,與服務(wù)器建立連接。

$result = socket_connect($socket, $ip, $port);

$cont = $_GET[“search”];

(5)將用戶的搜索內(nèi)容$cont從UTF-8轉(zhuǎn)為GB2312,并保存為$in。這就是要發(fā)送到服務(wù)器端的內(nèi)容。

$in = iconv(“utf-8”,”gb2312//IGNORE”,$cont).” n”;$out =‘’;

(6)通過socket_write函數(shù)向服務(wù)器發(fā)送搜索請求。

if(!socket_write($socket, $in, strlen($in))) {

echo“socket_write() failed: reason:“ .“ ”;

}

(7)通過socket_read()函數(shù)接受服務(wù)器的搜索結(jié)果,將搜索結(jié)果從UTF-8轉(zhuǎn)化為GB2312

保存為$out并輸出,將搜索結(jié)果展現(xiàn)給用戶。

$out = socket_read($socket,1024

(8)關(guān)閉Socket對象

socket_close($socket);

5 結(jié)束語

通過建立索引庫,搜索查詢服務(wù)器,以及Web交互,我們基本實現(xiàn)了搜索引擎的核心功能,建立了具有中文分詞和關(guān)鍵詞高亮顯示功能的中文搜索引擎系統(tǒng)??傮w來講,該中文搜索引擎具有很好的可維護(hù)性和可擴(kuò)展性,可以在此基礎(chǔ)上開發(fā)適應(yīng)不同業(yè)務(wù)需求的搜索引擎,如在本系統(tǒng)的基礎(chǔ)上進(jìn)行二次開發(fā)的簡體中文版兒童搜索引擎。

[1]吳娛.中文搜索引擎的現(xiàn)狀與展望[J].現(xiàn)代情報,1999,(3):40-44.

[2]姜元爽,譚培,劉馨元,呂加國.基于Lucene的垂直搜索引擎的設(shè)計與實現(xiàn)[J].福建電腦, 2015,31(12):21-22.

Design and implementation of Chinese search engine based on Lucene and Socket communication

Cao Shulin, Lv Qingsong,Wang Yifan,Yin Qian,Zheng Xin
(School of information science and technology, Beijing Normal University,Beijing, 100875)

Lucene is a full-text search engine toolkit written in Java, an object-oriented, multi-tier package that provides a low-coupling, platform-independent and full-text search engine architecture. The network programming based on streaming Socket is an effective method to design the network communication program. Based on Lucene, this paper designs and implements the Chinese search engine by using Chinese word segmentation technology. At the same time, it uses Java and PHP Socket network programming technology to realize the function of using Lucene service through PHP website.

Chinese search engine; Lucene; Socket; Chinese word segmentation; java; PHP

尹乾

國家自然科學(xué)基金(No.61472043)。

猜你喜歡
搜索引擎用戶
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
網(wǎng)絡(luò)搜索引擎亟待規(guī)范
Nutch搜索引擎在網(wǎng)絡(luò)輿情管控中的應(yīng)用
Camera360:拍出5億用戶
100萬用戶
如何獲取一億海外用戶
基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
廣告主與搜索引擎的雙向博弈分析
主站蜘蛛池模板: 成人国产小视频| 亚洲欧美另类中文字幕| 欧美亚洲欧美| www.91中文字幕| 国产欧美日韩视频怡春院| 国产成人综合久久精品尤物| 国产成人午夜福利免费无码r| 亚洲高清日韩heyzo| 日韩免费毛片| 99热这里只有精品免费| 国产综合精品一区二区| 欧美成人aⅴ| 88av在线看| 人妖无码第一页| 婷婷六月综合| 四虎精品黑人视频| 又污又黄又无遮挡网站| 国产一级一级毛片永久| 国产美女91呻吟求| 国产欧美网站| 日本手机在线视频| 91精品免费高清在线| 伊人久久影视| 91成人在线免费视频| 丰满人妻久久中文字幕| 99精品视频在线观看免费播放| 国产人成在线观看| 九色免费视频| 波多野结衣久久高清免费| 国产凹凸一区在线观看视频| a在线亚洲男人的天堂试看| 99在线观看国产| 国产成人综合日韩精品无码首页| 国产伦精品一区二区三区视频优播 | 亚洲色无码专线精品观看| 日日拍夜夜嗷嗷叫国产| 啪啪免费视频一区二区| 国产成人亚洲毛片| 精品人妻系列无码专区久久| 日韩欧美中文字幕在线韩免费 | 精品国产美女福到在线直播| 国产无码在线调教| 亚洲国产精品日韩欧美一区| 国模视频一区二区| 国产91丝袜在线观看| 无码专区国产精品一区| 99re这里只有国产中文精品国产精品 | 54pao国产成人免费视频| 美女黄网十八禁免费看| 国产综合色在线视频播放线视| 亚洲色图欧美在线| 色综合手机在线| 综合久久久久久久综合网| 91久久精品日日躁夜夜躁欧美| 午夜精品国产自在| 欧美a在线看| 日本少妇又色又爽又高潮| 美女潮喷出白浆在线观看视频| 国产中文在线亚洲精品官网| 亚洲愉拍一区二区精品| 国产精品久久久久久久伊一| www精品久久| 免费a级毛片18以上观看精品| 性欧美精品xxxx| 无码区日韩专区免费系列| 国产精品xxx| 香蕉eeww99国产精选播放| 麻豆国产精品| 亚洲精品视频免费| a级毛片毛片免费观看久潮| 91色综合综合热五月激情| 国产精品成人第一区| 国产中文一区二区苍井空| 久久久久久国产精品mv| 婷婷色狠狠干| 国产成人乱码一区二区三区在线| 亚洲日韩欧美在线观看| 久久99国产精品成人欧美| 找国产毛片看| 欧美啪啪网| 激情综合图区| 成人福利免费在线观看|