laoding
          本來我以為,隱身了別人就找不到我,沒有用的,像我這樣拉風(fēng)的男人,無論走到哪里,都像在黑暗中的螢火蟲一樣,那樣的鮮明,那樣的出眾。我那憂郁的眼神,稀疏的胡茬,那微微隆起的將軍肚和親切的笑容......都深深吸引了眾人......
          posts - 0,  comments - 37,  trackbacks - 0
           

          1.     什么是lucene

          Apache Lucene是一個(gè)開放源程序的搜尋器引擎,利用它可以輕易地為Java軟件加入全文搜尋功能。Lucene的最主要工作是替文件的每一個(gè)字作索引,索引讓搜尋的效率比傳統(tǒng)的逐字比較大大提高,Lucen提供一組解讀,過濾,分析文件,編排和使用索引的API,它的強(qiáng)大之處除了高效和簡單外,是最重要的是使使用者可以隨時(shí)應(yīng)自已需要自訂其功能。 Luceneapache軟件基金會項(xiàng)目組的一個(gè)子項(xiàng)目,是一個(gè)開放源代碼的全文檢索引擎工具包,即它不是一個(gè)完整的全文檢索引擎,而是一個(gè)全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎,部分文本分析引擎。Lucene的目的是為軟件開發(fā)人員提供一個(gè)簡單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實(shí)現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎。

          2.     Lucene能做什么

          Lucene使你可以為你的應(yīng)用程序添加索引和搜索能力。Lucene可以索引并能使得可以轉(zhuǎn)換成文本格式的任何數(shù)據(jù)能夠被搜索。Lucene并不關(guān)心數(shù)據(jù)的來源、格式甚至它的語言,只要你能將它轉(zhuǎn)換為文本。這就意味著你可經(jīng)索引并搜索存放于文件中的數(shù)據(jù):在遠(yuǎn)程服務(wù)器上的web頁面,存于本地文件系統(tǒng)的文檔,簡單的文本文件,微軟Word文檔,HTMLPDF文件或任何其它能夠提取出文本信息的格式。

          同樣,利用Lucene你可以索引存放于數(shù)據(jù)庫中的數(shù)據(jù),提供給用戶很多數(shù)據(jù)庫沒有提供的全文搜索的能力。一旦你集成了Lucene,你的應(yīng)用程序的用戶就能夠像這樣來搜索:+George +Rice –eat –pudding, Apple –pie +Tiger, animal:monkey AND food:banana等等。利用Lucene,你可以索引和搜索email郵件,郵件列表檔案,即時(shí)聊天記錄,你的Wiki頁面……等等更多。

          3.     Lucene的優(yōu)點(diǎn)

          1)索引文件格式獨(dú)立于應(yīng)用平臺。Lucene定義了一套以8位字節(jié)為基礎(chǔ)的索引文件格式,使得兼容系統(tǒng)或者不同平臺的應(yīng)用能夠共享建立的索引文件。

          2)在傳統(tǒng)全文檢索引擎的倒排索引的基礎(chǔ)上,實(shí)現(xiàn)了分塊索引,能夠針對新的文件建立小文件索引,提升索引速度。然后通過與原有索引的合并,達(dá)到優(yōu)化的目的。Lucene提供了索引的擴(kuò)展機(jī)制,因此索引可以動(dòng)態(tài)擴(kuò)展。

          4)設(shè)計(jì)了獨(dú)立于語言和文件格式的文本分析接口,索引器通過接受Token流完成索引文件的創(chuàng)立,用戶擴(kuò)展新的語言和文件格式,只需要實(shí)現(xiàn)文本分析的接口。

          5)已經(jīng)默認(rèn)實(shí)現(xiàn)了一套強(qiáng)大的查詢引擎,用戶無需自己編寫代碼即使系統(tǒng)可獲得強(qiáng)大的查詢能力,Lucene的查詢實(shí)現(xiàn)中默認(rèn)實(shí)現(xiàn)了布爾操作、模糊查詢、分組查詢等等。

          6搜索過程優(yōu)化。Lucene面向全文檢索的優(yōu)化在于首次索引檢索后,并不把所有的記錄(Document)具體內(nèi)容讀取出來,而起只將所有結(jié)果中匹配度最高的頭100條結(jié)果(TopDocs)的ID放到結(jié)果集緩存中并返回。

          7Lucene的另外一個(gè)特點(diǎn)是在收集結(jié)果的過程中將匹配度低的結(jié)果自動(dòng)過濾掉了。這也是和數(shù)據(jù)庫應(yīng)用需要將搜索的結(jié)果全部返回不同之處

          4.     查詢相關(guān)

          Analyzer是分析器,它的作用是把一個(gè)字符串按某種規(guī)則劃分成一個(gè)個(gè)詞語,并去除其中的無效詞語,這里說的無效詞語是指英文中的“of”、 the”,中文中的“的”、“地”等詞語,這些詞語在文章中大量出現(xiàn),但是本身不包含什么關(guān)鍵信息,去掉有利于縮小索引文件、提高效率、提高命中率。

          分詞的規(guī)則千變?nèi)f化,但目的只有一個(gè):按語義劃分。這點(diǎn)在英文中比較容易實(shí)現(xiàn),因?yàn)橛⑽谋旧砭褪且詥卧~為單位的,已經(jīng)用空格分開;而中文則必須以某種方法將連成一片的句子劃分成一個(gè)個(gè)詞語。

          (1)      用通配符進(jìn)行搜索

          單個(gè)任意字符匹配的是所有可能單個(gè)字符。例如,搜索"text或者"test",可以這樣:te?t

          多個(gè)任意字符匹配的是0個(gè)及更多個(gè)可能字符。例如,搜索test, tests 或者 tester,可以這樣:test*

          您也可以在字符竄中間使用多個(gè)任意字符通配符。te*t

          注意:您不能在搜索的項(xiàng)開始使用*或者?符號。

          (2)      模糊查詢

          Lucene支持基于Levenshtein DistanceEdit Distance算法的模糊搜索。要使用模糊搜索只需要在單獨(dú)項(xiàng)的最后加上符號"~"。例如搜索拼寫類似于"roam"的項(xiàng)這樣寫:roam~

          這次搜索將找到形如foamroams的單詞。

          注意:使用模糊查詢將自動(dòng)得到增量因子(boost factor)為0.2的搜索結(jié)果.

          (3)      布爾操作符

          布爾操作符可將項(xiàng)通過邏輯操作連接起來。Lucene支持AND, "+", OR, NOT "-"這些操作符。(注意:布爾操作符必須全部大寫)

          (4)      轉(zhuǎn)義特殊字符

          Lucene支持轉(zhuǎn)義特殊字符,因?yàn)樘厥庾址遣樵冋Z法用到的。現(xiàn)在,特殊字符包括

          + - && || ! ( ) { } [ ] ^ " ~ * ? : "

          轉(zhuǎn)義特殊字符只需在字符前加上符號",例如搜索(1+1):2,使用查詢

          "(1"+1")":2

          5.     一些使用經(jīng)驗(yàn)

          (1)      關(guān)鍵詞區(qū)分大小寫

          OR AND TO等關(guān)鍵詞是區(qū)分大小寫的,lucene只認(rèn)大寫的,小寫的當(dāng)做普通單詞。

          (2)      讀寫互斥性

          同一時(shí)刻只能有一個(gè)對索引的寫操作,在寫的同時(shí)可以進(jìn)行搜索。

          (3)      文件鎖

          在寫索引的過程中強(qiáng)行退出將在tmp目錄留下一個(gè)lock文件,使以后的寫操作無法進(jìn)行,可以將其手工刪除。

          (4)       時(shí)間格式

          lucene只支持一種時(shí)間格式yyMMddHHmmss,所以你傳一個(gè)yy-MM-dd HH:mm:ss的時(shí)間給lucene它是不會當(dāng)作時(shí)間來處理的。

          (5)      索引更新

          lucene不支持索引更新,必須是先刪除再新建索引,如果數(shù)據(jù)量很大且更新快則相當(dāng)麻煩,本身建立索引是個(gè)漫長的過程,同時(shí)相當(dāng)耗內(nèi)存且很傷disk,不能實(shí)時(shí)的滿足查詢。

          (6)      中間取索引

          lucene不支持從中間取索引。例如:用戶取第十頁,lucene需要把前面所有的內(nèi)容都要檢索出,然后所有的排序,過濾掉前面的然后返回。

          (7)      英文查詢

          若查詢英文,比如有一句話:jiangxi strong 如果你輸入jiang或者stron等不完整的一個(gè)詞,將不能查詢出結(jié)果,當(dāng)你輸入jiangxi或者strong才能查詢出結(jié)果。

          posted on 2008-10-31 17:33 老丁 閱讀(2697) 評論(0)  編輯  收藏 所屬分類: 搜索引擎 lucene
          本博客主為學(xué)習(xí)和復(fù)習(xí)之用,無關(guān)其他,想罵人的繞道
          Email:dkm123456@126.com
          大家一起交流進(jìn)步
          QQ:283582761


          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          留言簿(4)

          我參與的團(tuán)隊(duì)

          文章分類(50)

          文章檔案(48)

          相冊

          朋友

          搜索

          •  

          積分與排名

          • 積分 - 96927
          • 排名 - 597

          最新評論

          主站蜘蛛池模板: 元谋县| 河间市| 孝昌县| 昭平县| 徐州市| 天长市| 许昌县| 依兰县| 贞丰县| 桦南县| 通海县| 宁化县| 青岛市| 郧西县| 云浮市| 抚松县| 黑龙江省| 天长市| 炉霍县| 丁青县| 台安县| 厦门市| 张家港市| 安吉县| 奉新县| 正蓝旗| 阜城县| 肇庆市| 宜城市| 宁化县| 九龙县| 通山县| 乌审旗| 蒲江县| 富裕县| 留坝县| 武安市| 闽侯县| 潜山县| 封丘县| 南乐县|