導航:首頁 > 編程語言 > 全文檢索java

全文檢索java

發布時間:2023-01-27 12:03:23

A. 基於java的全文檢索技術研究的畢業論文

摘 要網路中的資源非常豐富,但是如何有效的搜索信息卻是一件困難的事情。建立搜索引擎就是解決這個問題的最好方法。本論文首先詳細介紹了基於英特網的搜索引擎的系統結構,然後從網路機器人、索引引擎、Web伺服器三個方面進行詳細的說明。為了更加深刻的理解這種技術,本人還親自實現了一個自己的Java搜索引擎——新聞搜索引擎。新聞搜索引擎是從指定的Web頁面中按照超連接進行解析、搜索,並把搜索到的每條新聞進行索引後加入資料庫。然後通過Web伺服器接受客戶端請求後從索引資料庫中搜索出所匹配的新聞。本人在介紹搜索引擎的章節中除了詳細的闡述技術核心外還結合了新聞搜索引擎的實現代碼來說明,圖文並茂、易於理解。 關鍵字:搜索引擎,網路機器人,Lucene,中文分詞,JavaCC AbstractThe resources in the internet are abundant, but it is a difficult job to search some useful information. So a search engine is the best method to solve this problem. This article fist introces the system structure of search engine based on the internet in detail, and then gives a minute explanation form Spider search, engine and web server. In order to understand the technology more deeply, I have programmed a news search engine by myself in Java.The news search engine is explained and searched according to hyperlink from a appointed web page, then indexes every searched information and adds it to the index database. Then after receiving the customers' requests from the web server, it soon searches the right news form the index engine,In the chapter of introcing search engine, it is not only elaborating the core technology, but also combine with the modern code, pictures included, easy to understand. Key Words:Search Engine, Spider, Lucene, Phrase Query, JavaCC 目 錄第1章 引言··· 11.1 選題背景:··· 11.2 現實意義··· 1第2章 搜索引擎的結構··· 32.1 系統概述··· 32.2 搜索引擎的構成··· 32.2.1 網路機器人··· 32.2.2 索引與搜索··· 32.2.3 Web伺服器··· 32.3 搜索引擎的主要指標及分析··· 42.4 小節··· 4第3章 網路機器人··· 53.1 什麼是網路機器人··· 53.2 網路機器人的結構分析··· 53.2.1 如何解析HTML· 53.2.2 該類幾種重要的方法。··· 63.2.3 Spider程序結構··· 63.2.4 如何構造Spider程序··· 73.2.5 如何提高程序性能··· 83.2.6 網路機器人的代碼分析··· 93.3 小節··· 10第4章 基於Lucene的索引與搜索··· 114.1 什麼是全文檢索與全文檢索系統?··· 114.2 什麼是Lucene全文檢索··· 124.3 Lucene的系統結構分析··· 134.3.1 系統結構組織··· 134.3.2 數據流分析··· 144.4 Lucene索引構建邏輯模塊分析··· 154.4.1 緒論··· 154.4.2 對象體系與UML圖··· 164.4.3 Lucene的包結構··· 204.4.4 Lucene的主要邏輯圖··· 214.4.5 對Lucene包的小結··· 224.5 Lucene查詢邏輯··· 224.5.1 查詢者輸入查詢條件··· 224.5.2 查詢條件被傳達到查詢分析器中··· 224.5.3 查詢遍歷樹··· 234.5.4 返回結果··· 234.6 Lucene 檢索原理··· 234.7 Lucene和Nucth的中文分析模塊··· 254.7.1 Nutch分析··· 254.7.2 Nutch中文搜索3.1 中文分詞··· 264.7.3 利用JavaCC構造中文分析模塊··· 274.7.4 分詞小結··· 284.8 Lucene與Spider的結合··· 284.8.1 Index類的實現··· 284.8.2 HTML解析類··· 294.9 Lucene 小結··· 31第5章 基於Lucene的搜索引擎實現··· 325.1 基於Tomcat的Web伺服器··· 325.1.1 什麼是基於Tomcat的Web伺服器··· 325.2 用戶介面設計··· 325.2.1 客戶端設計··· 325.2.2 服務端設計··· 335.3 在Tomcat上部署項目··· 355.4 小節··· 35第6章 搜索引擎策略··· 366.1 簡介··· 366.2 面向主題的搜索策略··· 366.2.1 導向詞··· 366.2.2 網頁評級··· 366.2.3 權威網頁和中心網頁··· 376.3 小節··· 38結束語··· 39參考文獻··· 40致 謝··· 41外文資料原文··· 42外文原文翻譯··· 48 第1章 引言
1.1 選題背景:
面對浩瀚的網路資源,搜索引擎為所有網上沖浪的用戶提供了一個入口,毫不誇張的說,所有的用戶都可以從搜索出發到達自己想去的網上任何一個地方。因此它也成為除了電子郵件以外最多人使用的網上服務。搜索引擎技術伴隨著WWW的發展是引人注目的。搜索引擎大約經歷了三代的更新發展:第一代搜索引擎出現於1994年。這類搜索引擎一般都索引少於1,000,000個網頁,極少重新搜集網頁並去刷新索引。而且其檢索速度非常慢,一般都要等待10秒甚至更長的時間。在實現技術上也基本沿用較為成熟的IR(Information Retrieval)、網路、資料庫等技術,相當於利用一些已有技術實現的一個WWW上的應用。在1994年3月到4月,網路爬蟲World Web Worm (WWWW)平均每天承受大約1500次查詢。大約在1996年出現的第二代搜索引擎系統大多採用分布式方案(多個微型計算機協同工作)來提高數據規模、響應速度和用戶數量,它們一般都保持一個大約50,000,000網頁的索引資料庫,每天能夠響應10,000,000次用戶檢索請求。1997年11月,當時最先進的幾個搜索引擎號稱能建立從2,000,000到100,000,000的網頁索引。Altavista搜索引擎聲稱他們每天大概要承受20,000,000次查詢。結束語
本課題對基於網際網路的Java搜索引擎結構和性能指標進行了分析,了解Spider程序的結構和功能。在進行海量數據搜索時,如果使用單純的資料庫技術,那將是非常痛苦的,速度將是極大的瓶頸。所以本文提出了使用全文搜索引擎Lucene進行索引、搜索。解決中文分詞和有效的中文搜索信息。同時解決了如何把Lucene全文搜索引擎和Spider程序互相集合來實現新聞搜索的功能。對於如何構架基於Tomcat的Web伺服器,使得用戶通過瀏覽器進行新聞的搜索有了一定的理解,對Tomcat如何部署進行了說明。
在些基礎上,終於可以調試出一個簡單的在本地搜索新聞Java搜索引擎。

參考文獻
[1] Jeff Heaton(美), Programming Spiders, Bots, and Aggregator in Java.
[2] Borland Software Corporation(美),JBuilder培訓教程(譯者:周鵬 [等] 譯)北京:機械工業出版社
[3]徐寶文,張衛豐. 搜索引擎與信息獲取技術.北京:清華大學出版社,2003.5
[4]車東.基於Java的全文搜索引擎Lucene
[5]羅旭.主題搜索引擎的設計與實現
[6]Bruce Eckel(美).Thinking in Java.北京:機械工業出版社
[7] Otis Gospodnetic Erik Hatcher (美).Action in Lucene.電子工業出版社,2007.1
[8]耿祥義,張躍平. JAVA2實用教程(第二版).北京:清華大學出版社,2004.2
[9]劉彬.JSP資料庫高級教程.北京:清華大學出版社,2006.3
[10]劉衛國,嚴暉.資料庫技術與應用——SQL Server.北京:清華大學出版社,2007.1
[11]閆宏飛.Tiny Search Engine: Design and implementation(PPT). Oct.2003
[12]李曉明,閆宏飛,王繼民.搜索引擎——原理、技術與系統.北京:科學出版社,2004

更多參考請點擊 http://www.lw5173.com/article/html/707.html

B. java中如何實現全文檢索

java的開源的免費全文檢索工具Lucene
Lucene不是一個完整的全文索引應用,而是是一個用Java寫的全文索引引擎工具包,它可以方便的嵌入到各種應用中實現針對應用的全文索引/檢索功能。

Lucene的作者:Lucene的貢獻者Doug Cutting是一位資深全文索引/檢索專家,曾經是V-Twin搜索引擎(Apple的Copland操作系統的成就之一)的主要開發者,後在Excite擔任高級系統架構設計師,目前從事於一些INTERNET底層架構的研究。他貢獻出的Lucene的目標是為各種中小型應用程序加入全文檢索功能。

Lucene的發展歷程:早先發布在作者自己的www.lucene.com,後來發布在SourceForge,2001年年底成為APACHE基金會jakarta的一個子項目:http://jakarta.apache.org/lucene/

已經有很多Java項目都使用了Lucene作為其後台的全文索引引擎,比較著名的有:

Jive:WEB論壇系統;
Eyebrows:郵件列表HTML歸檔/瀏覽/查詢系統,本文的主要參考文檔「TheLucene search engine: Powerful, flexible, and free」作者就是EyeBrows系統的主要開發者之一,而EyeBrows已經成為目前APACHE項目的主要郵件列表歸檔系統。
Cocoon:基於XML的web發布框架,全文檢索部分使用了Lucene
Eclipse:基於Java的開放開發平台,幫助部分的全文索引使用了Lucene

對於中文用戶來說,最關心的問題是其是否支持中文的全文檢索。但通過後面對於Lucene的結構的介紹,你會了解到由於Lucene良好架構設計,對中文的支持只需對其語言詞法分析介面進行擴展就能實現對中文檢索的支持。

C. 全文檢索工具有哪些

1. Lucene

Lucene的開發語言是Java,也是Java家族中最為出名的一個開源搜索引擎,在Java世界中已經是標準的全文檢索程序,它提供了完整的查詢引擎和索引引擎,沒有中文分詞引擎,需要自己去實現,因此用Lucene去做一個搜素引擎需要自己去架構.另外它不支持實時搜索,但linkedin和twitter有分別對Lucene改進的實時搜素. 其中Lucene有一個C++移植版本叫CLucene,CLucene因為使用C++編寫,所以理論上要比lucene快.
2. Sphinx

Sphinx是一個用C++語言寫的開源搜索引擎,也是現在比較主流的搜索引擎之一,在建立索引的事件方面比Lucene快50%,但是索引文件比Lucene要大一倍,因此Sphinx在索引的建立方面是空間換取事件的策略,在檢索速度上,和lucene相差不大,但檢索精準度方面Lucene要優於Sphinx,另外在加入中文分詞引擎難度方面,Lucene要優於Sphinx.其中Sphinx支持實時搜索,使用起來比較簡單方便.
3. Xapian

Xapian是一個用C++編寫的全文檢索程序,它的api和檢索原理和lucene在很多方面都很相似,算是填補了lucene在C++中的一個空缺.
4. Nutch

Nutch是一個用java實現的開源的web搜索引擎,包括爬蟲crawler,索引引擎,查詢引擎. 其中Nutch是基於Lucene的,Lucene為Nutch提供了文本索引和搜索的API.

對於應該使用Lucene還是使用Nutch,應該是如果你不需要抓取數據的話,應該使用Lucene,最常見的應用是:你有數據源,需要為這些數據提供一個搜索頁面,在這種情況下,最好的方式是直接從資料庫中取出數據,並用Lucene API建立索引.
5. DataparkSearch

DataparkSearch是一個用C語言實現的開源的搜索引擎. 其中網頁排序是採用神經網路模型. 其中支持HTTP,HTTPS,FTP,NNTP等下載網頁.包括索引引擎,檢索引擎和中文分詞引擎(這個也是唯一的一個開源的搜索引擎里有中文分詞引擎).能個性化定製搜索結果,擁有完整的日誌記錄.
6. Zettair

Zettair是根據Justin Zobel的研究成果為基礎的全文檢索實驗系統.它是用C語言實現的. 其中Justin Zobel在全文檢索領域很有名氣,是業界第一個系統提出倒排序索引差分壓縮演算法的人,倒排列表的壓縮大大提高了檢索和載入的性能,同時空間膨脹率也縮小到相當優秀的水平. 由於Zettair是源於學術界,代碼是由RMIT University的搜索引擎組織寫的,因此它的代碼簡潔精煉,演算法高效,是學習倒排索引經典演算法的非常好的實例. 其中支持linux,windows,mac os等系統.
7. Indri

Indri是一個用C語言和C++語言寫的全文檢索引擎系統,是由University of Massachusetts和Carnegie Mellon University合作推出的一個開源項目. 特點是跨平台,API介面支持Java,PHP,C++.
來自網路。

D. java的luence全文檢索怎麼做

lucene是一個公用的全文索引組件,它的目標是把各種各樣格式的數據轉化成lucene特有的索引文件格式,這樣才能通過lucene的高速檢索機制進行全文檢索。

你的數據來源可以是關系資料庫,可以是word、execl、txt文檔,可以是html網頁,對於這些數據源,你必須將它們內部的數據讀取出來,並封裝成lucene的document實例,之後讓lucene幫你構建索引。

舉個例子:你的有一個用戶資料庫,裡面存儲了幾十萬的用戶信息,你現在要對這個資料庫進行全文索引,那麼你要做的事情是:

1.寫一段傳統的JDBC程序,講每條的用戶信息從資料庫讀取出來
2.針對每條用戶記錄,建立一個lucene document
Document doc = new Document();
並根據你的需要,將用戶信息的各個欄位對應luncene document中的field 進行添加,如:
doc.add(new Field("NAME","USERNAME",Field.Store.YES,Field.Index.UN_TOKENIZED));
然後將該條doc加入到索引中, 如: luceneWriter.addDocument(doc);
這樣袱常遞端郛得店全錠戶就建立了lucene的索引庫
3.編寫對索引庫的搜索程序(看lucene文檔),通過對lucene的索引庫的查找,你可以快速找到對應記錄的ID
4.通過ID到資料庫中查找相關記錄
ITjob里學。習到的,希望對你有所幫助

閱讀全文

與全文檢索java相關的資料

熱點內容
pythonorm框架有哪些 瀏覽:431
indesign轉pdf 瀏覽:482
javaweb找源碼 瀏覽:25
浪潮物理伺服器如何重啟 瀏覽:601
aes加密性能下降 瀏覽:448
linux驅動結構 瀏覽:867
psv安裝壓縮包 瀏覽:612
錦州聯通DNS伺服器地址 瀏覽:114
伺服器佔用太多的網路怎麼辦 瀏覽:936
設置ftp共享文件夾win10 瀏覽:793
伺服器和主機是什麼意思 瀏覽:638
自製透明收納文件夾 瀏覽:162
testflight怎麼下載安卓軟體 瀏覽:179
androidstudio替換字元 瀏覽:822
學python用途 瀏覽:527
抽美甲解壓助眠 瀏覽:700
榮耀如何修改app圖標 瀏覽:944
單片機增加按鍵功能增加音樂段 瀏覽:536
已知vpn伺服器ip地址 瀏覽:961
創新設計pdf 瀏覽:275