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

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

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

    鷹翔宇空

    學(xué)習(xí)和生活

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
    引自:http://www.gamvan.com/developer/java/opener/2005/12/846.html

    對(duì)于lucene全文檢索,可以簡約地看看它的7個(gè)主要類,這7個(gè)類同時(shí)也表達(dá)了處理全文檢索的7個(gè)意念。因?yàn)閿?shù)據(jù)庫比較為人所熟悉,它又與全文檢索某些理念極為相似,所以在對(duì)下面的概念說明時(shí),將會(huì)大量在滲入數(shù)據(jù)庫和全文檢索間的類比。
    1)Document :它的中文意思是文檔,對(duì)于一個(gè)文檔,通常都包括它的標(biāo)題、時(shí)間、作者、內(nèi)容。如果讓它的意思泛化,它也有文件的意思(相信Lucene的作者在取這個(gè)類名的時(shí)候也是經(jīng)過再三斟酌的),對(duì)于文件,它可以指一個(gè)TXT文本、一個(gè)HTML網(wǎng)頁、一個(gè)PDF文件等等。總而言之,它是映射著某一個(gè)具體的文件,這就是它的單位粒度。對(duì)應(yīng)于數(shù)據(jù)庫的概念是記錄,英文是Record,weblucene在索引源的xml中就原原本本地采用了這個(gè)概念,可參照<weblucene_home>/dump/blog.xml 。

    2)Field :中文意思是字段。漢語的翻譯將這個(gè)單詞的意思表達(dá)得更恰如其分了,意思是文字片段,它可以是一個(gè)或多個(gè)字。字段是文檔(Document)的次粒度單位,也是檢索的最基本單位。注意這個(gè)概念跟在搜索引擎的輸入框中隨意輸入的那幾個(gè)字或幾組字不是一樣的,在搜索輸入框中輸入的那些文字首先需要經(jīng)過一個(gè)QueryParser(這也是7個(gè)類中的一個(gè))將其分解成真正的Field。 在數(shù)據(jù)庫中本來就有Field 這個(gè)概念,它即是Record的次級(jí)單位。在數(shù)據(jù)庫一條或多條記錄怎么被找出來的,往往就經(jīng)由對(duì)Field的檢索而得來。在全文檢索中Document的最終取得也是差不多,它是根據(jù)現(xiàn)在的某個(gè)Filed來決定的。即根據(jù)文檔中的某些還不完整的東西牽引出它的所需的全部。
    示例代碼:
    代碼內(nèi)容
    [com.chedong.weblucene.search.WebLuceneResultSetTest]
    Document doc = new Document();
    doc.add(Field.Keyword("keyword", "房地產(chǎn)"));
    doc.add(Field.Keyword("keyword", "非典"));

    3)IndexWriter :索引書寫者
    示例代碼:
    [org.apache.lucene.index.TestIndexWriter]
    代碼內(nèi)容
    Document doc = new Document();
    doc.add(Field.UnStored("content", "aaa"));
    try {
    IndexWriter writer = new IndexWriter(dir, new WhitespaceAnalyzer(), true);
    writer.addDocument(doc);
    }
    catch (IOException e) {
    e.printStackTrace();
    }

    它的構(gòu)造器new IndexWriter(dir, new WhitespaceAnalyzer(), true) 有三個(gè)參數(shù),分別是Directory對(duì)象、分析器對(duì)象(這是下一個(gè)要介紹的類)和一個(gè)布爾量,是否要重寫索引就是由這個(gè)布爾量標(biāo)明的,如果取false則僅僅是將索引附加上來。

    4)Analyzer : 分析器,它將目錄中的一組原始文件分析成由一組Document和它相應(yīng)的次級(jí)粒度Field組成的索引。因?yàn)椴煌奈募愋停瑯拥奈谋酒鋬?nèi)部文件流組織形式是不一樣的,所以需要不同的分析器處理不同的文件類型(如PDFAnalyzer、HtmlAnalyzer)。又因?yàn)椴煌奈淖终Z言處理Field拆分(Token)上是不一樣的,所以在語言角度上又有另一層分析器的類別區(qū)分,如下面這行代碼是處理普通中文字符的
    [com.chedong.weblucene.search.WebLuceneResultSetTest]
    IndexWriter writer = new IndexWriter(dir, new CJKAnalyzer(), true);

    5)QueryParser :這前面在區(qū)分Field和用戶輸入的搜索關(guān)鍵字時(shí)已經(jīng)提及了。(它所用的詞是Query,跟數(shù)據(jù)庫所用的是一個(gè)概念的,這個(gè)詞同樣的檢索上讓人感覺沒有像Search那么費(fèi)盡心思去深究。)QueryParser并沒有實(shí)際地去做查詢工作,它只是Parser(剖析)用戶輸入的東西,并把剖析的結(jié)果以一種規(guī)則的形式送給Searcher去執(zhí)行一個(gè)真正的搜索。作為剖析的結(jié)果,不僅僅是Field,還有Field們相互間的關(guān)系(terms,譬如邏輯和AND,邏輯或OR, 邏輯非NOT)。

    6)Searcher : 搜索一個(gè)Query,將結(jié)果返回。
    [org.apache.lucene.search..TestNot]
    代碼內(nèi)容
    RAMDirectory store = new RAMDirectory();
    IndexWriter writer = new IndexWriter(store, new SimpleAnalyzer(), true);

    Document d1 = new Document();
    d1.add(Field.Text("field", "a b"));

    writer.addDocument(d1);
    writer.optimize();
    writer.close();

    Searcher searcher = new IndexSearcher(store);
    Query query = QueryParser.parse("a NOT b", "field", new SimpleAnalyzer());
    //System.out.println(query);
    Hits hits = searcher.search(query);

    對(duì)于每一個(gè)搜索器對(duì)象,它都需要指定一個(gè)索引文件路徑,然后由搜索器對(duì)Query對(duì)象執(zhí)行查詢。 上面的這個(gè)類袖珍地對(duì)7個(gè)主要類都均有涉及。

    7)Hits : Lucene的類注釋是:A ranked list of documents, used to hold search results. 搜索的結(jié)果不僅僅是一些文檔,而且這些文檔還是有級(jí)別的,這個(gè)級(jí)別是對(duì)于先后次序而言的。它對(duì)應(yīng)于數(shù)據(jù)庫中的RecordSet / ResultSet 。
    posted on 2006-02-20 14:31 TrampEagle 閱讀(748) 評(píng)論(0)  編輯  收藏 所屬分類: opensource
    主站蜘蛛池模板: 无码色偷偷亚洲国内自拍| 亚洲性色高清完整版在线观看| 亚洲人成网站在线播放2019| 99久久99这里只有免费费精品| 久久亚洲国产精品成人AV秋霞 | 欧洲黑大粗无码免费| 亚洲一卡2卡4卡5卡6卡残暴在线| 8888四色奇米在线观看免费看| 亚洲人成在线电影| 在线美女免费观看网站h| 亚洲综合视频在线观看| 日韩精品免费一级视频| 日本亚洲免费无线码| 成人免费无码大片A毛片抽搐色欲| 亚洲午夜精品一区二区麻豆| 大陆一级毛片免费视频观看| 黄页网址在线免费观看| 国产亚洲精品不卡在线| 久久久精品午夜免费不卡| 亚洲人成网www| 国产精品视频免费一区二区| 特黄特色大片免费| 亚洲国产三级在线观看| 1000部免费啪啪十八未年禁止观看| 亚洲图片激情小说| 全免费a级毛片免费看无码| 无人视频在线观看免费播放影院| 国产午夜亚洲精品午夜鲁丝片| 国产精品白浆在线观看免费| 亚洲五月丁香综合视频| 四虎永久免费观看| 中文在线免费不卡视频| 亚洲春黄在线观看| 四虎1515hm免费国产| 日韩精品在线免费观看| 亚洲中文字幕精品久久| 伊人久久综在合线亚洲91| 91黑丝国产线观看免费| 极品美女一级毛片免费| 亚洲日本乱码一区二区在线二产线| 亚洲精品成人av在线|