Lucene多線程操作實現對于并發,Lucene遵循以下規則:?1.允許任意多的讀操作并發,即任意數量用戶可同時對同一索引做檢索操作。2.即便正在進行索引修改操作(索引優化、添加文檔、刪除文檔),依然允許任意多的檢索操作并發執行。3.不允許并發修改操作,也就是說同一時間只允許一個索引修改操作。Lucene內部已經對多線程安全進行了處理,很多操作都使用了lock進行多線程同步鎖定。只要遵循一定的規則,就可以在多線程環境下安全運行Lucene。?
其實,lucene是一個很容易上手的搜索引擎框架,傳統的搜索引擎,涉及到爬蟲,也就是爬取網頁,然后對網頁進行加工,也就是索引,最后用于搜索,lucene這個框架可以很方便的幫你做到后面兩個步驟,也就是索引和搜索!本文嘗試通過一個例子,使大家掌握lucene的使用核心方法,包括分詞、索引、搜索不同的目錄、搜索不同的域,希望大家通過這個實例,對lucene和搜索引擎能有比較全面的認識! 其實,lucene是一個很容易上手的搜索引擎框架,傳統的搜索引擎,涉及到爬蟲,也就是爬取網頁,然后對網頁進行加工,也就是索引,最后用于搜 索,lucene這個框架可以很方便的幫你做到后面兩個步驟,也就是索引和搜索!本文嘗試通過一個例子,使大家掌握lucene的使用核心方法,包括分 詞、索引、搜索不同的目錄、搜索不同的域,希望大家通過這個實例,對lucene和搜索引擎能有比較全面的認識!
Lucene是apache軟件基金會 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包及架構,提供了完整的查詢引擎和索引引擎,實現了一些通用的分詞算法,預留很多詞法分析器接口。本文以myrss.easyjf.com網站系統中使用Lucene實現全文檢索的代碼為例,簡單演示Lucene在實際項目中的應用。<br> 使用Lucene實現全文檢索,主要有下面三個步驟:<br> 1、建立索引庫:根據網站新聞信息庫中的已有的數據資料建立Lucene索引文件。<br> 2、通過索引庫搜索:有了索引后,即可使用標準的詞法分析器或直接的詞法分析器實現進行全文檢索。<br> 3、維護索引庫:網站新聞信息庫中的信息會不斷的變動,包括新增、修改及刪除等,這些信息的變動都需要進一步反映到Lucene索引文件中。
網絡中的資源非常豐富,但是如何有效的搜索信息卻是一件困難的事情。建立搜索引擎就是解決這個問題的最好方法。本文首先詳細介紹了基于英特網的搜索引擎的系統結構,然后從網絡機器人、索引引擎、Web服務器三個方面進行詳細的說明。為了更加深刻的理解這種技術,本人還親自實現了一個自己的搜索引擎——新聞搜索引擎。<br> 新聞搜索引擎是從指定的Web頁面中按照超連接進行解析、搜索,并把搜索到的每條新聞進行索引后加入數據庫。然后通過Web服務器接受客戶端請求后從索引數據庫中搜索出所匹配的新聞。<br> 本人在介紹搜索引擎的章節中除了詳細的闡述技術核心外還結合了新聞搜索引擎的實現代碼來說明,圖文并茂、易于理解。
Lucene是一個全文搜索框架,而不是應用產品。因此它并不像www.baidu.com 或者google Desktop那么拿來就能用,它只是提供了一種工具讓你能實現這些產品。2 lucene的工作方式lucene提供的服務實際包含兩部分:一入一出。所謂入是寫入,即將你提供的源(本質是字符串)寫入索引或者將其從索引中刪除;所謂出是讀出,即向用戶提供全文搜索服務,讓用戶可以通過關鍵詞定位源。
Carrot2是一個開源的基于搜索結果的聚類引擎Lucene索引結果Lucene索引index由若干段(segment)組成,每一段由若干的文檔(document)組成,每一個文檔由若干的域(field)組成,每一個域由若干的項(term)組成。項是最小的索引概念單位,它直接代表了一個字符串以及其在文件中的位置、出現次數等信息。域是一個關聯的元組,由一個域名和一個域值組成,域名是一個字串,域值是一個項,比如將“標題”和實際標題的項組成的域。文檔是提取了某個文件中的所有信息之后的結果,這些組成了段,或者稱為一個子索引。子索引可以組合為索引,也可以合并為一個新的包含了所有合并項內部元素的子索引。
Lucene3.0之查詢處理(1):原理1、查詢的三種方式①順序查詢:簡單,但查詢效率低②索引查詢:快速,需要基礎索引結構支撐2、理論模型①布爾模型:基于集合論和布爾代數的一種簡單檢索模型②向量模型:查詢串和文檔之間分配不同的權值,權值大小放映了文檔庫中的文檔與用戶查詢串的相關度。查詢得到的結果文檔按照權值計算相關度有關排序,所以向量模型得到的匹配文檔可以是全部精確匹配,也可以是部分匹配查詢串。
Lucene3.0分詞原理與分詞系統分詞原理建立索引和查詢的過程中,都是以基本的語素項為單位的。基本的語素項就是通過分詞得到。這個過程決定了索引單元金額最終的匹配過程。分詞在文本索引的建立過程和用戶提交檢索過程中都存在。利用相同的分詞器,把短語或者句子切分成相同的結果,才能保證檢索過程順利進行。
Lucene是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎。Lucene以其方便使用、快速實施以及靈活性受到廣泛的關注。它可以方便地嵌入到各種應用中實現針對應用的全文索引、檢索功能,本總結使用lucene--2.3.2。
Compass是第一個實現java搜索引擎的開源框架,它是基于Lucene之上的,提供更簡單的搜索引擎API,事務支持,對象到搜索引擎映射(Annotations&XML),Xml到搜索引擎映射,可以和Hibernate,Spring集成,功能非常的強大。如果用Hibernate,Spring做的項目需要搜索引擎的話,Compass是個非常好的選擇。個人認為:如果說Lucene是搜索引擎中的JDBC,那么Compass就是Hibernate。而Compass和Hibernate不僅僅是比喻的像,它們的類和用法,和作用也非常的像。Compass是用面向對象編程方法來實現搜索。如果會Hibernate的話學Compass是非常容易的。
Lucene是一個基于 Java 的全文信息檢索工具包,它不是一個完整的搜索應用程序,而是為你的應用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一個開源項目。也是目前最為流行的基于 Java 開源全文檢索工具包。目前已經有很多應用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的幫助系統的搜索功能。Lucene 能夠為文本類型的數據建立索引,所以你只要能把你要索引的數據格式轉化的文本的,Lucene 就能對你的文檔進行索引和搜索。比如你要對一些 HTML 文檔,PDF 文檔進行索引的話你就首先需要把 HTML 文檔和 PDF 文檔轉化成文本格式的,然后將轉化后的內容交給 Lucene 進行索引,然后把創建好的索引文件保存到磁盤或者內存中,最后根據用戶輸入的查詢條件在索引文件上進行查詢。不指定要索引的文檔的格式也使 Lucene 能夠幾乎適用于所有的搜索應用程序。Lucene是一個全文搜索框架,而不是應用產品。因此它并不像www.baidu.com 或者google Desktop那么拿來就能用,它只是提供了一種工具讓你能實現這些產品。