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

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

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

    DANCE WITH JAVA

    開發出高質量的系統

    常用鏈接

    統計

    積分與排名

    好友之家

    最新評論

    apache lucene 的核心類

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

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

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

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

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

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

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

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

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

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

    下邊是核心搜索類:
    IndexSearcher:IndexSearcher用來搜索而IndexWriter用來索引:暴露幾個搜索方法的索引的主要鏈接。你可以把IndexSearcher想象為以只讀方式打開索引的一個類。它提供幾個搜索方法,其中一些在抽象基類Searcher中實現;最簡單的接受單個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內部生成,所以在索引時你
    一般不必考慮它們。在搜索時,你可能創建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 閱讀(2734) 評論(0)  編輯  收藏 所屬分類: 搜索引擎lucence

    主站蜘蛛池模板: 精品久久久久国产免费| 中文字幕在线视频免费观看| 亚洲六月丁香六月婷婷蜜芽| 亚洲最大的成网4438| 亚洲天堂中文字幕| 99re这里有免费视频精品| 亚洲a一级免费视频| 免费人成视频在线观看免费| 边摸边吃奶边做爽免费视频99 | a级毛片免费在线观看| 国产一级a毛一级a看免费人娇| 最近国语视频在线观看免费播放| a级黄色毛片免费播放视频| 久久精品免费电影| www视频在线观看免费| 女人18一级毛片免费观看| 99re在线视频免费观看| 99久久99这里只有免费费精品| 成人免费视频网站www| 在线观看人成视频免费| va亚洲va日韩不卡在线观看| 国产亚洲色婷婷久久99精品91| 亚洲国产精品福利片在线观看| 91大神亚洲影视在线| 亚洲国产精品一区二区三区在线观看| 亚洲老熟女五十路老熟女bbw | 毛片大全免费观看| 国产又粗又猛又爽又黄的免费视频 | 久久亚洲中文无码咪咪爱| 成人午夜影视全部免费看| 国内精品免费视频精选在线观看 | yellow免费网站| 免费国产黄网站在线观看可以下载| 国产1000部成人免费视频| 哒哒哒免费视频观看在线www| 亚洲最大AV网站在线观看| 亚洲精品亚洲人成在线观看麻豆 | 久久精品国产亚洲av麻豆色欲 | 伊人久久大香线蕉亚洲五月天| 久久久久亚洲精品无码蜜桃 | 亚洲AV乱码久久精品蜜桃|