lyyb2001

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

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

          Posted on 2007-03-05 08:36 skycity 閱讀(331) 評論(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(進(jìn)行中)多個版本?
          Lucene 主要的兩個任務(wù):indexing and searching
          Indexing主要使用的類
          IndexWriterindex文件由它創(chuàng)建
          Directory標(biāo)志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(目標(biāo))和value(條件),可以直接用new Term("field","value")構(gòu)造
          ueryuery有很多子類,比如BooleanQuery,PhraseQuery等,可以在Term基礎(chǔ)上加上邏輯(是 否, 或)
          TermQuery很基本的Query, 可以由term構(gòu)造 new TermQuery(term);
          Hits包含了搜索的結(jié)構(gòu),默認(rèn)按照相關(guān)度排序,hits并不會把所有記錄(可能很大)直接保存,而是有一個lazy loading機(jī)制


          Lyyb2001
          主站蜘蛛池模板: 连州市| 呼玛县| 昭苏县| 县级市| 安徽省| 溆浦县| 昌都县| 新兴县| 城市| 太原市| 富裕县| 天镇县| 宁武县| 普兰店市| 镇原县| 南川市| 金堂县| 防城港市| 色达县| 永安市| 澎湖县| 微山县| 建湖县| 当雄县| 霍山县| 门头沟区| 云浮市| 健康| 德兴市| 当雄县| 香河县| 济源市| 剑河县| 黄陵县| 亳州市| 云霄县| 沂南县| 丁青县| 眉山市| 舞阳县| 贺州市|