Lucene 學(xué)習(xí)第一天

          Lucene提供的服務(wù)實際包含兩部分:
               1) 寫入:將你提供的源寫入索引或者將其從索引中刪除
                    寫入流程:
                    (1)源字符串首先經(jīng)過analyzer處理,分成一個個單詞,去除可選(stopword)
                    (2)將源中需要的信息加入Document的各個field中,并把需要索引的field索引起來,把需要存儲的
                         field存儲起來
                    (3)將索引寫入存儲器,存儲器可以是內(nèi)存或者磁盤
               2) 讀出:向用戶提供全文搜索服務(wù),讓用戶通過關(guān)鍵字定位源
                    讀出流程:
                    (1)用戶提供搜索關(guān)鍵詞,經(jīng)過analyzer處理
                    (2)對處理后的關(guān)鍵字搜索索引找出對應(yīng)的Document
                    (3)用戶根據(jù)需要從找到的Docement中提取需要的Field
          概念:
                   Analyzer   :分析器:把一個字符串按照某種規(guī)則劃分成一個個的詞語,并去除其中的無效詞語.
                   Document :用戶提供的源是一條條記錄,它們可以是文本文件、字符串或者數(shù)據(jù)庫表的一條記錄等等。
                                      一條記錄經(jīng)過索引后,就是以 一個Document的形式存儲在索引文件中。用戶進行搜索也
                                      是以Document列表的形式返回。
                    field         :  一個Docuement可以包含多個信息域,這些信息域就是通過Field在Document中存儲的。它
                                      有兩個屬性可以選擇:存儲和索引。
                    term        :  搜索的最小單位,表示文檔的一個詞語,由兩部分組成:它表示的詞語和這個詞語出現(xiàn)的
                                       field
                    tocken      :  是term的第一次出現(xiàn),它包含term文本和相應(yīng)的起止偏移以及一個類型的字符串
                    segment   : (小文件)添加索引時,document首先寫入不同的小文件然后再合并成一個大索引文件

          如何建立索引:

                
          IndexWriter writer = new IndexWriter(“/data/index/”, new StandardAnalyzer(), true); 
          Document doc = new Document();
          doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.TOKENIZED));
          doc.add(new Field("content", "lucene works well", Field.Store.YES, Field.Index.TOKENIZED));
          writer.addDocument(doc);
          writer.optimize();
          writer.close();
               下面我們分析一下這段代碼。
                      首先我們創(chuàng)建了一個writer,并指定存放索引的目錄為“/data/index”,使用的分析器為StandardAnalyzer,第三個
                參數(shù)說明如果已經(jīng)有索引文件在索引目錄下,我們將覆蓋它們。然后我們新建一個document。
                    我們向document添加一個field,名字是“title”,內(nèi)容是“lucene introduction”,對它進行存儲并索引。再添加一個名
                字是“content”的field,內(nèi)容是“lucene works well”,也是存儲并索引。然后我們將這個文檔添加到索引中,如果有多個文
                檔,可以重復(fù)上面的操作,創(chuàng)建document并添加。
                      添加完所有document,我們對索引進行優(yōu)化,優(yōu)化主要是將多個segment合并到一個,有利于提高索引速度。隨后將
                writer關(guān)閉,這點很重要。
                      如果你想把純文本文件索引起來,而不想自己將它們讀入字符串創(chuàng)建field,你可以用下面的代碼創(chuàng)建
                field: Field field = new Field("content", new FileReader(file));
                這里的file就是該文本文件。該構(gòu)造函數(shù)實際上是讀去文件內(nèi)容,并對其進行索引,但不存儲。





          posted on 2012-09-19 17:22 Nirvana reborn 閱讀(403) 評論(0)  編輯  收藏 所屬分類: ★搜索引擎


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計

          公告

          我好喜歡它,
          我的 QQ 66013804
          我想做技術(shù)流,可是我很懶,
          博客新地址:<a href="

          隨筆分類(19)

          文章檔案(1)

          博主鏈接

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 涞水县| 昌邑市| 揭东县| 苏州市| 青田县| 顺平县| 台安县| 蓝田县| 泰顺县| 长汀县| 纳雍县| 察雅县| 斗六市| 扎兰屯市| 蕲春县| 攀枝花市| 凤山市| 吉木萨尔县| 新昌县| 浙江省| 鄂尔多斯市| 连江县| 龙江县| 工布江达县| 宁明县| 义马市| 乌拉特前旗| 萍乡市| 永胜县| 休宁县| 紫云| 汶上县| 乌兰浩特市| 安西县| 孙吴县| 曲阜市| 布拖县| 桃园市| 新余市| 郑州市| 沾化县|