日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

搜索引擎lucene

發布時間:2023/12/19 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 搜索引擎lucene 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引用:http://baike.baidu.com/view/371811.htm

Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎。

目錄

簡介
歷史
創始人
特點及優勢
搜索
建立索引
展開
簡介
歷史
創始人
特點及優勢
搜索
建立索引
展開

編輯本段簡介

Lucene是一套用于全文檢索和搜尋的開源程式庫,由Apache軟件基金會支持和提供。Lucene提供了一個簡單卻強大的應用程式接口,能夠做全文索引和搜尋,在Java開發環境里Lucene是一個成熟的免

??

費開放源代碼工具;就其本身而論,Lucene是現在并且是這幾年,最受歡迎的免費java資訊檢索程式庫。人們經常提到資訊檢索程式庫,就像是搜尋引擎,但是不應該將資訊檢索程式庫與網搜索引擎相混淆。[1]

編輯本段歷史

Lucene最初是由Doug Cutting開發的,在SourceForge的網站上提供下載。在2001年9月做為高質量的開源Java產品加入到Apache軟件基金會的 Jakarta家族中。隨著每個版本的發布,這個項目得到

??Lucene 圖片

明顯的增強,也吸引了更多的用戶和開發人員。2004年7月,Lucen

??Lucene分析圖

e1.4版正式發布,10月的1.4.2版本做了一次bug修正。表1.1顯示了Lucene的發布歷史。 版本 發布日期 里程碑 0.01 2000年3月 第一個開源版本(SourceForge) 1.0 2000年10月 1.01b 2001年7月 最后的SourceForge版本 1.2 2002年6月 第一個Apache Jakarta版本 1.3 2003年12月 復合索引格式,查詢分析器增加,遠程搜索,token定位,可擴展的API 1.4 2004年7月 Sorting, span queries, term vectors 1.4.1 2004年8月 排序性能的bug修正 1.4.2 2004年10月 IndexSearcher optimization and misc. fixes 1.4.3 2004年冬 Misc. fixes2.4.1 2009年3月8日發布新版本 2.3.0 2008年1月 更新為2.3.0 2.4.0 2008年10月 更新為2.4.0 2.4.1 2009年 5月 更新為 2.4.1 2.9.0 2009年9月25號 更新為2.9.0 2.9.1 2009年11月6號 更新為2.9.1 3.0.0 2009年11月25號 更新為3.0.0 3.0.1 2010年2月26號 更新為3.0.1 3.0.2 2010年6月18號 更新為3.0.2 3.0.3 2010年12月3號 更新為3.0.3 3.3.0 2011年7月初 更新為3.3.0 3.4.0 2011年9月14日 更新為3.4.0 3.5.0 2011年11月26日 更新為3.5.0 3.5.0 2012年4月12日更新為3.6.0 3.6.1 2012年7月23日更新為3.6.1 4.0 2012年10月12日更新為4.0[2]

編輯本段創始人

Lucene['lusen]的原作者是Doug Cutting,他是一位資深全文索引/檢索專家,曾經是V-Twin搜索引擎的主要

??Lucene

開發者,后在Excite擔任高級系統架構設計師,目前從事于一些Internet底層架構的研究。早先發布在作者自己的,他貢獻出Lucene的目標是為各種中小型應用程式加入全文檢索功能。后來發布在SourceForge,2001年年底成為apache軟件基金會jakarta的一個子項目。

編輯本段特點及優勢

作為一個開放源代碼項目,Lucene從問世之后,引發了開放源代碼社群的巨大反響,程序員們不僅使用它構建具體的全文檢索應用,而且將之集成到各種系統軟件中去,以及構建Web應用,甚至某些商業軟件也采用了Lucene作為其內部全文檢索子系統的核心。apache軟件基金會的網站使用了Lucene作為全文檢索的引擎,IBM的開源軟件eclipse[9]的2.1版本中也采用了Lucene作為幫助子系統的全文索引引擎,相應的IBM的商業軟件Web Sphere[10]中也采用了Lucene。Lucene以其開放源代碼的特性、優異的索引結構、良好的系統架構獲得了越來越多的應用。 Lucene是一個高性能、可伸縮的信息搜索(IR)庫。它可以為你的應用程序添加索引和搜索能力。Lucene是用java實現的、成熟的開源項目,是著名的Apache Jakarta大家庭的一員,并且基于Apache軟件許可 [ASF, License]。同樣,Lucene是目前非常流行的、免費的Java信息搜索(IR)庫。

突出的優點

Lucene作為一個全文檢索引擎,其具有如下突出的優點: (1)索引文件格式獨立于應用平臺。Lucene定義了一套以8位字節為基礎的索引文件格式,使得兼容系統或者不同平臺的應用能夠共享建立的索引文件。 (2)在傳統全文檢索引擎的倒排索引的基礎上,實現了分塊索引,能夠針對新的文件建立小文件索引,提升索引速度。然后通過與原有索引的合并,達到優化的目的。 (3)優秀的面向對象的系統架構,使得對于Lucene擴展的學習難度降低,方便擴充新功能。 (4)設計了獨立于語言和文件格式的文本分析接口,索引器通過接受Token流完成索引文件的創立,用戶擴展新的語言和文件格式,只需要實現文本分析的接口。 (5)已經默認實現了一套強大的查詢引擎,用戶無需自己編寫代碼即使系統可獲得強大的查詢能力,Lucene的查詢實現中默認實現了布爾操作、模糊查詢(Fuzzy Search[11])、分組查詢等等。 面對已經存在的商業全文檢索引擎,Lucene也具有相當的優勢。 首先,它的開發源代碼發行方式(遵守Apache Software License[12]),在此基礎上程序員不僅僅可以充分的利用Lucene所提供的強大功能,而且可以深入細致的學習到全文檢索引擎制作技術和面相對象編程的實踐,進而在此基礎上根據應用的實際情況編寫出更好的更適合當前應用的全文檢索引擎。在這一點上,商業軟件的靈活性遠遠不及Lucene。 其次,Lucene秉承了開放源代碼一貫的架構優良的優勢,設計了一個合理而極具擴充能力的面向對象架構,程序員可以在Lucene的基礎上擴充各種功能,比如擴充中文處理能力,從文本擴充到HTML、PDF[13]等等文本格式的處理,編寫這些擴展的功能不僅僅不復雜,而且由于Lucene恰當合理的對系統設備做了程序上的抽象,擴展的功能也能輕易的達到跨平臺的能力。 最后,轉移到apache軟件基金會后,借助于apache軟件基金會的網絡平臺,程序員可以方便的和開發者、其它程序員交流,促成資源的共享,甚至直接獲得已經編寫完備的擴充功能。最后,雖然Lucene使用Java語言寫成,但是開放源代碼社區的程序員正在不懈的將之使用各種傳統語言實現(例如.net framework[14]),在遵守Lucene索引文件格式的基礎上,使得Lucene能夠運行在各種各樣的平臺上,系統管理員可以根據當前的平臺適合的語言來合理的選擇。 如何用java實現lucene(只使用,不求甚解版-_-")

前提

lucene有7個包需要導入:analysis,document,index,queryParser,search,store,util

編輯本段搜索

IndexSearcher searcher= new IndexSearcher("E:/index") Query query = new TermQuery(new Term("title", "lucene"));//單個字節查詢 //Query query = new FuzzyQuery(new Term("title", "lucena"));//模糊查詢 //Query query = new WildcardQuery(new Term("title", "lu*"));//?通配符查詢 ?代表一個字符,*代表0到多個字符 //BooleanQuery query = new BooleanQuery();//條件查詢 //BooleanQuery qson1 = new BooleanQuery(); //Query q1 = new TermQuery(new Term("title", "lucene")); //qson1.add(q1, Occur.MUST);//MUST是必須滿足的 //BooleanQuery qson2 = new BooleanQuery(); //Query q2= new TermQuery(new Term("sex", "woman")); //qson2 .add(q2, Occur.MUST_NOT);//MUST_NOT是必須不滿足 //query.add(qson1, Occur.SHOULD); //query.add(qson2, Occur.SHOULD);//SHOULD代表滿足qson1或者滿足qson2都可以 //PhraseQuery query = new PhraseQuery();//近距離查詢 //query.setSlop(5);//距離設置為5 //query.add(new Term("title", "lucene")); //query.add(new Term("title", "introduction"));//查詢出title中lucene和introduction距離不超過5個字符的結果 //Query query = new PrefixQuery(new Term("title", "lu"));//WildcardQuery的lu*一樣 //RangeQuery query = new RangeQuery(new Term("time", "50"),new Term("time", "60"), true); //true代表[50,60],false代表(50,60) Hits hits = searcher.search(query); for (int i = 0; i < hits.length(); i++) { Document d = hits.doc(i); String title= d.get("title"); System.out.print(title+ " "); } 這樣,基本上就可以使用了 注:以上代碼為lucene早些版本的寫法。lucene3.02的寫法有所改變。

編輯本段建立索引

IndexWriter writer = new IndexWriter("E:/index", new StandardAnalyze(),true,MaxFieldLength.UNLIMITED); //true代表覆蓋原先數據,maxFieldLength用來限制Field的大小 Document doc = new Document(); doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); doc.add(new Field("time", "60", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); writer.addDocument(doc); writer.optimize(); //優化 writer.close();

Apache軟件基金會

頂級項目
??ActiveMQ??Ant??Apache HTTP Server??APR
??Beehive??Camel??Cassandra??Cayenne
??Cocoon??Commons??Derby??Directory
??Excalibur??Felix??Forrest??Geronimo
??Gump??Hadoop??Harmony??HBase
??iBATIS??Jackrabbit??James??Lenya
??Lucene??Maven??mod_perl??MyFaces
??OFBiz??OpenEJB??OpenJPA??POI
??Roller??Shale??SpamAssassin??stdcxx
??Struts??Subversion??Tapestry??Tomcat
??Traffic Server??Tuscany??Velocity??Wicket
??XMLBeans???
?
其他項目
??Jakarta項目??Apache XML??Apache Incubator?
?
子項目
??BCEL??BSF??Cactus??JMeter
??Slide??Xerces??Batik??FOP
??Log4j??XAP??River??ServiceMix
??Log4Net??Abdera??Ivy??CXF
??ODE??Solr??
?
參考資料
  • 1.??Java搜索引擎 Lucene??.開源社區網?[引用日期2012-08-18]?.

  • 2.??Apache Lucene??.Apache Lucene?.2012-11-7?[引用日期2012-11-7]?.

擴展閱讀:
  • 1

    http://lucene.apache.org/?官方站點

  • 2

    Lucene使用經驗總結,文章匯總:http://liyanblog.cn/tags/Lucene

開放分類:
計算機?搜索引擎?開源軟件?應用科學?技能?科學?計算機技術?計算機科學?計算機編程?索引?,?Apache項目
我來完善“Lucene”相關詞條:
javaJAVA2000全文檢索apacheSolarisMVC模式

轉載于:https://www.cnblogs.com/sode/archive/2013/01/22/2870837.html

總結

以上是生活随笔為你收集整理的搜索引擎lucene的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。