<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    DANCE WITH JAVA

    開發(fā)出高質量的系統(tǒng)

    常用鏈接

    統(tǒng)計

    積分與排名

    好友之家

    最新評論

    apache lucene 的核心類

    下邊介紹一下lucene的核心類:(參考lucene in action)
    主要有兩部分組成,核心索引類和核心搜索類,顧名思意,就是用來建立索引和用來搜索的類。

    IndexWriter:可以對索引進行寫操作,但不能讀取或者搜索。是唯一能寫索引的類。

    Directory:Directory類代表一個Lucene索引的位置。它是一個抽象類,允許它的子類(其中的兩個包含在Lucene中)在合適時存儲索引。在我們的Indexer示例中,我們使用一個實際文件系統(tǒng)目錄的路徑傳遞給IndexWriter的構造函數來獲得Directory的一個實例。IndexWriter然后使用Directory的一個具體實現(xiàn)FSDirectory,并在文件系統(tǒng)的一個目錄中創(chuàng)建索引。在你的應用程序中,你可能較喜歡將Lucene索引存儲在磁盤上。這時可以使用FSDirectory,一個包含文件系統(tǒng)真實文件列表的Driectory子類,如同我們在Indexer中一樣。另一個Directory的具體子類是RAMDirectory。盡管它提供了與FSDirectory相同的接口,RAMDirectory將它的所有數據加載到內存中。所以這個實現(xiàn)對較小索引很有用處,可以全部加載到內存中并在程序關閉時銷毀。因為所有數據加載到快速存取的內存中而不是在慢速的硬盤上,RAMDirectory適合于你需要快速訪問索引的情況,不管是索引或搜索。做為實例,Lucene的開發(fā)者在所有他們的單元測試中做了擴展使用:當測試運行時,快速的內存駐留索引被創(chuàng)建搜索,當測試結束時,索引自動銷毀,不會在磁盤上留下任何殘余。當然,在將文件緩存到內存的操作系統(tǒng)中使用時RAMDirectory和FSDirectory之間的性能差別較小

    Analyzer:分析文本內容,提取關鍵字

    Document:一個Document代表字段的集合。你可以把它想象為以后可獲取的虛擬文檔—一塊數據,如一個網頁、一個郵件消息或一個文本文件。一個文檔的字段代表這個文檔或與這個文檔相關的元數據

    Field:在索引中的每個Document含有一個或多個字段,具體化為Field類。每個字段相應于數據的一個片段,將在搜索時查詢或從索引中重新獲取。
    Lucene提供四個不同的字段類型,你可以從中做出選擇:

    Keyword—不被分析,但是被索引并逐字存儲到索引中。這個類型適合于原始值需要保持原樣的字段,如URL、文件系統(tǒng)路徑、日期、個人名稱、社會安全號碼、電話號碼等等。例如,我們在Indexer(列表1.1)中把文件系統(tǒng)路徑作為Keyword字段。

    UnIndexed—不被分析也不被索引,但是它的值存儲到索引中。這個類型適合于你需要和搜索結果一起顯示的字段(如URL或數據庫主鍵),但是你從不直接搜索它的值。因為這種類型字段的原始值存儲在索引中,這種類型不適合于存放比較巨大的值,如果索引大小是個問題的話。

    UnStored—和UnIndexed相反。這個字段類型被分析并索引但是不存儲在索引中。它適合于索引大量的文本而不需要以原始形式重新獲得它。例如網頁的主體或任休其它類型的文本文檔。

    Text—被分析并索引。這就意味著這種類型的字段可以被搜索,但是要小心字段大小。如果要索引的數據是一個String,它也被存儲;但如果數據(如我們的Indexer例子)是來自一個Reader,它就不會被存儲。這通常是混亂的來源,所以在使用Field.Text時要注意這個區(qū)別。
    所有字段由名稱和值組成。你要使用哪種字段類型取決于你要如何使用這個字段和它的值。嚴格來說,Lucene只有一個字段類型:以各自特征來區(qū)分的字段。有些是被分析的,有些不是;有些是被索引,然面有些被逐字地存儲等等。
    注意 注意Field.Text(String, String)和Field.Text(String, Reader)之間的區(qū)別。String變量存儲字段數據,而Reader變量不存儲。為索引一個String而又不想存儲它,可以用Field.UnStored(String, String)

    下邊是核心搜索類:
    IndexSearcher:IndexSearcher用來搜索而IndexWriter用來索引:暴露幾個搜索方法的索引的主要鏈接。你可以把IndexSearcher想象為以只讀方式打開索引的一個類。它提供幾個搜索方法,其中一些在抽象基類Searcher中實現(xiàn);最簡單的接受單個Query對象做為參數并返回一個Hits對象。這個方法的典型應用類似這樣:
    IndexSearcher is = new IndexSearcher(
    FSDirectory.getDirectory(“
    /tmp/index”, false));
    Query q 
    = new TermQuery(new Term(“contents”, “lucene”));
    Hits hits 
    = is.search(q);

    Term:
    Term是搜索的基本單元。與Field對象類似,它由一對字符串元素組成:字段的名稱和字段的值。注意Term對象也和索引過程有關。但是它們是由Lucene內部生成,所以在索引時你
    一般不必考慮它們。在搜索時,你可能創(chuàng)建Term對象并TermQuery同時使用。
    Query q = new TermQuery(new Term(“contents”, “lucene”));
    Hits hits = is.search(q);
    這段代碼使Lucene找出在contents字段中含有單詞lucene的所有文檔。因為TermQuery對象繼承自它的抽象父類Query,你可以在等式的左邊用Query類型。

    Query
    Lucene中包含一些Query的具體子類。到目前為止,在本章中我們僅提到過最基本的Lucene Query:TermQuery。其它Query類型有BooleanQuery,PhraseQuery, PrefixQuery, PhrasePrefixQuery, RangeQuery, FilteredQuery和SpanQuery

    TermQuery
    TermQuery是Lucene支持的最基本的查詢類型,并且它也是最原始的查詢類型之一。它用來匹配含有指定值的字段的文檔.

    Hits類是一個搜索結果(匹配給定查詢的文檔)文檔隊列指針的簡單容器。基于性能考慮,Hits的實例并不從索引中加載所有匹配查詢的所有文檔,而是每次一小部分

    posted on 2007-06-12 09:52 dreamstone 閱讀(2735) 評論(0)  編輯  收藏 所屬分類: 搜索引擎lucence

    主站蜘蛛池模板: 16女性下面无遮挡免费| a毛片免费全部播放完整成| 久操免费在线观看| 伊人久久大香线蕉亚洲五月天| 日日躁狠狠躁狠狠爱免费视频| 国产成人免费手机在线观看视频| 亚洲日韩亚洲另类激情文学| 在线播放免费播放av片| ww亚洲ww在线观看国产| 成人黄动漫画免费网站视频| 亚洲色在线无码国产精品不卡| 日韩高清在线高清免费| 国产精品亚洲专一区二区三区| 日韩亚洲国产二区| 国产免费MV大全视频网站| 亚洲日韩欧洲乱码AV夜夜摸| 久9久9精品免费观看| 亚洲网站视频在线观看| 国产91色综合久久免费| 亚洲日韩一区二区一无码| 免费a级毛片视频| 九九99热免费最新版| 久久久久亚洲AV无码专区体验| 亚洲香蕉免费有线视频| 中文字幕亚洲情99在线| 国产中文字幕免费观看| 中国毛片免费观看| 亚洲美女色在线欧洲美女| 成年女人毛片免费视频| 亚欧洲精品在线视频免费观看| 亚洲日韩图片专区第1页| 久久笫一福利免费导航| 最新亚洲人成网站在线观看 | 在线人成免费视频69国产 | 亚洲国产中文在线视频| 日韩视频免费一区二区三区| 精品国产免费人成网站| 亚洲国产美女视频| 亚洲国产精品第一区二区三区| 99re这里有免费视频精品| 激情小说亚洲图片|