lyyb2001

          只是為方便自己找記錄而已
          posts - 57, comments - 27, trackbacks - 0, articles - 5
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理

          java搜索引擎: lucene學(xué)習(xí)筆記

          Posted on 2007-03-05 08:36 skycity 閱讀(337) 評論(0)  編輯  收藏 所屬分類: APACHE開源項目
          簡介
          Doug Cutting 于2000年開始的項目 2001年9月后加入apache, Lucene是Doug Cutting的middle name 。 目前Lucene已經(jīng)是apache的top level的項目, 已經(jīng)不在jakarta下面, 同時也有了python,perl,c++,.net, Ruby(進行中)多個版本?
          Lucene 主要的兩個任務(wù):indexing and searching
          Indexing主要使用的類
          IndexWriterindex文件由它創(chuàng)建
          Directory標志Index路徑的類:FSDirectory(文件系統(tǒng))和RAMDirectory(內(nèi)存)
          Analyzer分析器,處理分詞,大小寫,詞根,消除stop words等,轉(zhuǎn)換格式
          document用于存儲field對象
          Field有4(5?)種類型的Field, 下面專門列出

          stop words: 出現(xiàn)頻率非常高的一些詞匯,它們一般沒有檢索的意義, 比如英文中的(as a, an, the, in)
          類型AnalyzedIndexedStored說明
          Field.Keyword(String)?YY儲存直接檢索的對象(身份證號,姓名,日期)
          Field.UnIndexed(String,String)??Y不用于檢索信息,顯示文件類型、地址
          Field.UnStored(String,String)Y??大段文本內(nèi)容,會用來檢索,但是不存儲
          Field.Text(String,String)YYY檢索,獲取都需要的內(nèi)容,直接放index中,不過這樣會增大index
          Field.Text(String,Reader)YY?建議采用Unstored的策略.

          Searching主要使用的類
          IndexSearcher以只讀的方式訪問index(注意IndexReader不是只讀的),需要傳給他一個Query對象來搜索
          TermTerm是一個搜索的基本單位,包含F(xiàn)ield(目標)和value(條件),可以直接用new Term("field","value")構(gòu)造
          ueryuery有很多子類,比如BooleanQuery,PhraseQuery等,可以在Term基礎(chǔ)上加上邏輯(是 否, 或)
          TermQuery很基本的Query, 可以由term構(gòu)造 new TermQuery(term);
          Hits包含了搜索的結(jié)構(gòu),默認按照相關(guān)度排序,hits并不會把所有記錄(可能很大)直接保存,而是有一個lazy loading機制


          Lyyb2001
          主站蜘蛛池模板: 伊宁市| 防城港市| 山阳县| 盖州市| 乌兰察布市| 馆陶县| 芒康县| 青岛市| 临泉县| 淮滨县| 高要市| 子长县| 双桥区| 永胜县| 萨嘎县| 阳曲县| 兴国县| 洛阳市| 临海市| 静乐县| 康乐县| 乡城县| 泉州市| 大化| 平原县| 津南区| 盐边县| 沛县| 水富县| 北宁市| 松桃| 白山市| 南充市| 合阳县| 昌黎县| 鄂托克前旗| 桐梓县| 会东县| 江孜县| 长武县| 嵩明县|