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

基于Lucene與Socket通信的中文搜索引擎的設計與實現

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

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

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

基于Lucene與Socket通信的中文搜索引擎的設計與實現

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

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

Lucene是一個用Java寫的全文檢索引擎工具包,面向對象多層封裝,提供了一個低耦合、與平臺無關的、可進行二次開發的全文檢索引擎架構,是這幾年最受歡迎的信息檢索程序庫;基于流式 Socket的網絡編程是設計網絡通信程序的一種有效方法。本文基于Lucene,采用中文分詞技術,設計并實現了中文搜索引擎,同時應用Java和PHP的Socket網絡編程技術,實現了外網通過PHP網頁使用Lucene服務的功能。

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

0 引言

中文搜索引擎是指以網絡上的中文信息為主要對象,提供信息的自動收集、過濾、索引和檢索導航等服務的搜索引擎[1]。本文在Lucene的基礎上,進行二次開發,設計了搜索引擎核心的三大模塊:索引模塊,檢索模塊和web交互模塊,使用了中文分詞技術和關鍵詞高亮顯示技術,實現了按關鍵詞快速搜索的界面友好的中文搜索引擎。

1 系統架構設計

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

2 建立索引庫

Lucene將文本以倒排索引的數據結構進行存儲,把文檔中提取出來的文字作為關鍵字[2],該倒排索引的基本結構如下:

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

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

首先,Lucene使用分詞器對經過預處理的純文本字節流進行分詞;然后,調用Document類的add方法生成field實例,創建文檔;最后,使用IndexWriter將Document寫入索引庫。

2.1 中文分詞器的選擇

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

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

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

2.2 創建索引庫

對文本進行中文分詞等分析之后,就可以創建索引庫。核心代碼如下:

(1)創建Directory

(2)創建IndexWriter

(3)創建document對象

(4)為document添加field對象

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

(6)使用完成后需要將writer進行關閉

3 建立搜索查詢服務器

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

3.1 IndexSearch類實現搜索

用戶的搜索請求被分詞后,調用Lucene的檢索器IndexSearch進行搜索,返回Topdocs類。核心代碼如下。

(1)創建Directory

(2)創建IndexReader

(3)根據IndexWriter創建IndexSearcher

(4)創建parser用來確定搜索的內容,第二個參數表示搜索的域

(5)根據Searcher返回TopDocs

(6)根據TopDocs獲取ScoreDoc

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

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

(9)關閉reader

(10)返回搜索結果

3.2 關鍵詞高亮顯示

自定義一個關鍵詞高亮顯示函數displayHTMLHight。核心代碼如下。

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

(3)創建QueryScorer,對query進行評分

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

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

4 建立Web交互

為了使用戶從服務器上獲取網頁內容,還要客戶端與服務端進程建立連接。UDP和TCP的通信采用Socket方法連接。本系統使用Socket流式通信,實現了客戶端和服務端的通訊功能。

4.1 Java實現服務器端

(1)首先創建一個ServerSocket對象,并為運行該語句的計算機的指定端口建立一個監聽服務,這里綁定端口號為5678。

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

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

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

(5)調用IndexSearch函數,返回搜索結果,并發送給客戶端

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

(7)監聽結束后,需要關閉client對象

4.2 PHP實現客戶端

為了使用戶可以通過外網使用搜索查詢服務,本系統采用PHP的Socket通信。關鍵操作如下。

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

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

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

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

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

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

$cont = $_GET[“search”];

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

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

(6)通過socket_write函數向服務器發送搜索請求。

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

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

}

(7)通過socket_read()函數接受服務器的搜索結果,將搜索結果從UTF-8轉化為GB2312

保存為$out并輸出,將搜索結果展現給用戶。

$out = socket_read($socket,1024

(8)關閉Socket對象

socket_close($socket);

5 結束語

通過建立索引庫,搜索查詢服務器,以及Web交互,我們基本實現了搜索引擎的核心功能,建立了具有中文分詞和關鍵詞高亮顯示功能的中文搜索引擎系統。總體來講,該中文搜索引擎具有很好的可維護性和可擴展性,可以在此基礎上開發適應不同業務需求的搜索引擎,如在本系統的基礎上進行二次開發的簡體中文版兒童搜索引擎。

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

[2]姜元爽,譚培,劉馨元,呂加國.基于Lucene的垂直搜索引擎的設計與實現[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

尹乾

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

猜你喜歡
搜索引擎用戶
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
網絡搜索引擎亟待規范
中國衛生(2015年12期)2015-11-10 05:13:38
Nutch搜索引擎在網絡輿情管控中的應用
警察技術(2015年3期)2015-02-27 15:37:09
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
基于Nutch的醫療搜索引擎的研究與開發
廣告主與搜索引擎的雙向博弈分析
主站蜘蛛池模板: 色亚洲激情综合精品无码视频 | 国产精品lululu在线观看| 欧美日韩中文国产| 99热国产这里只有精品无卡顿"| 中国一级特黄视频| 国模私拍一区二区三区| 福利视频一区| 久久男人视频| 狠狠色丁香婷婷| 狠狠色噜噜狠狠狠狠色综合久| 成人第一页| 伊人五月丁香综合AⅤ| 亚洲福利片无码最新在线播放| 91探花在线观看国产最新| 激情爆乳一区二区| 国产一级毛片yw| 人妻熟妇日韩AV在线播放| 18禁不卡免费网站| 国产精品亚洲а∨天堂免下载| 2021精品国产自在现线看| 国产在线八区| 国产欧美日韩视频怡春院| 91精品人妻一区二区| 岛国精品一区免费视频在线观看| 国产特级毛片aaaaaaa高清| 精品视频一区二区三区在线播| 亚洲日本中文字幕乱码中文| 亚洲欧美日韩另类在线一| 国产屁屁影院| 露脸一二三区国语对白| 四虎综合网| 免费人成在线观看成人片| 黄色网站不卡无码| 91免费国产高清观看| 一本综合久久| 国产十八禁在线观看免费| 亚洲人成日本在线观看| 中文字幕亚洲乱码熟女1区2区| 久久久久久尹人网香蕉| 欧美激情首页| 中文成人在线视频| 国产门事件在线| 欧美精品啪啪| 国产黑丝视频在线观看| 亚洲综合天堂网| 天天摸天天操免费播放小视频| 免费jizz在线播放| 国产69囗曝护士吞精在线视频| www欧美在线观看| 日本午夜三级| 萌白酱国产一区二区| 精品一区二区三区无码视频无码| 久久伊人久久亚洲综合| 日韩一级毛一欧美一国产| 国产成人亚洲综合a∨婷婷| 欧美一区二区三区欧美日韩亚洲| 亚洲精品视频免费看| 国产亚洲欧美在线专区| 日韩A∨精品日韩精品无码| 日韩色图区| 精品伊人久久大香线蕉网站| 久久精品视频亚洲| 深爱婷婷激情网| 久久国产拍爱| 亚洲中文精品人人永久免费| 日本一本在线视频| 免费视频在线2021入口| 成人精品在线观看| 2020国产免费久久精品99| 2022精品国偷自产免费观看| 国产麻豆精品久久一二三| 露脸一二三区国语对白| 无码免费视频| 波多野结衣在线一区二区| 99尹人香蕉国产免费天天拍| 尤物精品视频一区二区三区| 国产精品成人AⅤ在线一二三四| 国产一二三区在线| 中国一级特黄视频| 最新午夜男女福利片视频| 999国产精品| 国产91丝袜在线播放动漫 |