lyyb2001

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

          java搜索引擎: lucene學習筆記

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

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

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


          Lyyb2001
          主站蜘蛛池模板: 隆安县| 通山县| 招远市| 廊坊市| 兴和县| 彰化县| 增城市| 仲巴县| 东安县| 吉隆县| 留坝县| 久治县| 东丽区| 克山县| 连城县| 邵阳县| 城口县| 湘潭县| 璧山县| 登封市| 鞍山市| 新龙县| 罗田县| 丰原市| 社旗县| 彩票| 天门市| 正定县| 民乐县| 青田县| 鲁甸县| 赞皇县| 巢湖市| 兴文县| 梁河县| 嘉峪关市| 资溪县| 饶河县| 图们市| 建平县| 苏州市|