青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Javen-Studio 咖啡小屋

http://javenstudio.org - C++ Java 分布式 搜索引擎
Naven's Research Laboratory - Thinking of Life, Imagination of Future

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  24 隨筆 :: 57 文章 :: 170 評(píng)論 :: 4 Trackbacks

4           索引是如何創(chuàng)建的

為了使用Lucene來索引數(shù)據(jù),首先你比把它轉(zhuǎn)換成一個(gè)純文本(plain-texttokens的數(shù)據(jù)流(stream),并通過它創(chuàng)建出Document對(duì)象,其包含的Fields成員容納這些文本數(shù)據(jù)。一旦你準(zhǔn)備好些Document對(duì)象,你就可以調(diào)用IndexWriter類的addDocument(Document)方法來傳遞這些對(duì)象到Lucene并寫入索引中。當(dāng)你做這些的時(shí)候,Lucene首先分析(analyzer)這些數(shù)據(jù)來使得它們更適合索引。詳見《Lucene In Action

    // Store the index on disk
    Directory directory = FSDirectory.getDirectory("/tmp/testindex");
    
// Use standard analyzer
    Analyzer analyzer = new StandardAnalyzer(); 
    
// Create IndexWriter object
    IndexWriter iwriter = new IndexWriter(directory, analyzer, true);
    iwriter.setMaxFieldLength(
25000);
    
// make a new, empty document
    Document doc = new Document();
    File f 
= new File("/tmp/test.txt");
    
// Add the path of the file as a field named "path".  Use a field that is 
    
// indexed (i.e. searchable), but don't tokenize the field into words.
    doc.add(new Field("path", f.getPath(), Field.Store.YES, Field.Index.UN_TOKENIZED));
    String text 
= "This is the text to be indexed.";
    doc.add(
new Field("fieldname", text, Field.Store.YES,      Field.Index.TOKENIZED));
    
// Add the last modified date of the file a field named "modified".  Use 
    
// a field that is indexed (i.e. searchable), but don't tokenize the field
    
// into words.
    doc.add(new Field("modified",
        DateTools.timeToString(f.lastModified(), DateTools.Resolution.MINUTE),
        Field.Store.YES, Field.Index.UN_TOKENIZED));
    
// Add the contents of the file to a field named "contents".  Specify a Reader,
    
// so that the text of the file is tokenized and indexed, but not stored.
    
// Note that FileReader expects the file to be in the system's default encoding.
    
// If that's not the case searching for special characters will fail.
    doc.add(new Field("contents"new FileReader(f)));
    iwriter.addDocument(doc);
    iwriter.optimize();
    iwriter.close();

下面詳細(xì)介紹每一個(gè)類的處理機(jī)制。

4.1       索引創(chuàng)建類IndexWriter

一個(gè)IndexWriter對(duì)象創(chuàng)建并且維護(hù)(maintains) 一條索引.

它的構(gòu)造函數(shù)(constructor)create參數(shù)(argument)確定(determines)是否一條新的索引將被創(chuàng)建,或者是否一條已經(jīng)存在的索引將被打開。需要注意的是你可以使用create=true參數(shù)打開一條索引,即使有其他readers也在在使用這條索引。舊的readers將繼續(xù)檢索它們已經(jīng)打開的”point in time”快照(snapshot),并不能看見那些新已創(chuàng)建的索引,直到它們?cè)俅未蜷_(re-open)。另外還有一個(gè)沒有create參數(shù)的構(gòu)造函數(shù),如果提供的目錄(provided path)中沒有已經(jīng)存在的索引,它將創(chuàng)建它,否則將打開此存在的索引。

另一方面(in either case),添加文檔使用addDocument()方法,刪除文檔使用removeDocument()方法,而且一篇文檔可以使用updateDocument()方法來更新(僅僅是先執(zhí)行delete在執(zhí)行add操作而已)。當(dāng)完成了添加、刪除、更新文檔,應(yīng)該需要調(diào)用close方法。

這些修改會(huì)緩存在內(nèi)存中(buffered in memory),并且定期地(periodically)刷新到(flushDirectory中(在上述方法的調(diào)用期間)。一次flush操作會(huì)在如下時(shí)候觸發(fā)(triggered):當(dāng)從上一次flush操作后有足夠多緩存的delete操作(參見setMaxBufferedDeleteTerms(int)),或者足夠多已添加的文檔(參見setMaxBufferedDocs(int)),無論哪個(gè)更快些(whichever is sooner)。當(dāng)一次flush發(fā)生時(shí),等待的(pendingdeleteadd文檔都會(huì)被flush到索引中。一次flush可能觸發(fā)一個(gè)或更多的片斷合并(segment merges)。

構(gòu)造函數(shù)中的可選參數(shù)(optional argumentautoCommit控制(controls)修改對(duì)IndexReader實(shí)體(instance)讀取相同索引的能見度(visibility)。當(dāng)設(shè)置為false時(shí),修改操作將不可見(visible)直到close()方法被調(diào)用后。需要注意的是修改將依然被flush進(jìn)Directory,就像新文件一樣(as new files),但是卻不會(huì)被提交(commit)(沒有新的引用那些新文件的segments_N文件會(huì)被寫入(written referencing the new files))直道close()方法被調(diào)用。如果在調(diào)用close()之前發(fā)生了某種嚴(yán)重錯(cuò)誤(something goes terribly wrong)(例如JVM崩潰了),于是索引將反映(reflect)沒有任何修改發(fā)生過(none of changes made)(它將保留它開始的狀態(tài)(remain in its starting state))。你還可以調(diào)用close(),這樣可以關(guān)閉那些沒有提交任何修改操作的writers,并且清除所有那些已經(jīng)flush但是現(xiàn)在不被引用的(unreferenced)索引文件。這個(gè)模式(mode)對(duì)防止(preventreaders在一個(gè)錯(cuò)誤的時(shí)間重新刷新(refresh)非常有用(例如在你完成所有delete操作后,但是在你完成添加操作前的時(shí)候)。它還能被用來實(shí)現(xiàn)簡(jiǎn)單的single-writer的事務(wù)語義(transactional semantics)("all or none")。

當(dāng)autoCommit設(shè)為true的時(shí)候,每次flush也會(huì)是一次提交(IndexReader實(shí)體將會(huì)把每次flush當(dāng)作一次提交)。這是缺省的設(shè)置,目的是為了匹配(match2.2版本之前的行為(behavior)。當(dāng)以這種模式運(yùn)行時(shí),當(dāng)優(yōu)化(optimize)或者片斷合并(segment merges)正在進(jìn)行(take place)的時(shí)候需要小心地重新刷新(refresh)你的readers,因?yàn)檫@兩個(gè)操作會(huì)綁定(tie up)可觀的(substantial)磁盤空間。

當(dāng)一條索引暫時(shí)(for a while)將不會(huì)有更多的文檔被添加,并且期望(desired)得到最理想(optimal)的檢索性能(performance),于是optimize()方法應(yīng)該在索引被關(guān)閉之前被調(diào)用。

打開IndexWriter會(huì)為使用的Directory創(chuàng)建一個(gè)lock文件。嘗試對(duì)相同的Directory打開另一個(gè)IndexWriter將會(huì)導(dǎo)致(lead to)一個(gè)LockObtainFailedException異常。如果一個(gè)建立在相同的DirectoryIndexReader對(duì)象被用來從這條索引中刪除文檔的時(shí)候,這個(gè)異常也會(huì)被拋出。

專家(Expert):IndexWriter允許指定(specify)一個(gè)可選的(optionalIndexDeletionPolicy實(shí)現(xiàn)。你可以通過這個(gè)控制什么時(shí)候優(yōu)先的提交(prior commit)從索引中被刪除。缺省的策略(policy)是KeepOnlyLastCommitDeletionPolicy類,在一個(gè)新的提交完成的時(shí)候它會(huì)馬上所有的優(yōu)先提交(prior commit)(這匹配2.2版本之前的行為)。創(chuàng)建你自己的策略能夠允許你明確地(explicitly)保留以前的”point in time”提交(commit)在索引中存在(alive)一段時(shí)間。為了讓readers刷新到新的提交,在它們之下沒有被刪除的舊的提交(without having the old commit deleted out from under them)。這對(duì)那些不支持“在最后關(guān)閉時(shí)才刪除”語義(”delete on last close semantics)的文件系統(tǒng)(filesystem)如NFS,而這是Lucene的“point in time”檢索通常所依賴的(normally rely on)。

 

 

 

 

 

 

 

Annotated Lucene 作者:naven 日期:2007-5-1

posted on 2007-05-10 00:07 Javen-Studio 閱讀(1252) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            蜜月aⅴ免费一区二区三区| 欧美连裤袜在线视频| 欧美一区二区视频97| 免费亚洲电影在线| 久久精品一区四区| 久久久欧美一区二区| 亚洲精品网站在线播放gif| 欧美一级欧美一级在线播放| 亚洲作爱视频| 99www免费人成精品| 久久久精品一区| 国产精品日韩专区| 亚洲精品女av网站| 久久婷婷人人澡人人喊人人爽| 狂野欧美激情性xxxx| 亚洲一区二区高清| 欧美激情欧美狂野欧美精品| 狠狠色丁香婷婷综合久久片| 午夜精品久久一牛影视| 亚洲精品黄色| 久久久91精品国产| 国产色综合久久| 亚洲自拍偷拍一区| 日韩视频免费大全中文字幕| 亚洲精品视频在线播放| 老**午夜毛片一区二区三区| 国产主播一区二区| 久久久www成人免费精品| 午夜精品久久久久久久久| 国产精品久久久久天堂| 欧美日韩视频在线一区二区 | 亚洲一级黄色片| 亚洲卡通欧美制服中文| 欧美人在线视频| 久久久久亚洲综合| 欧美激情一区在线| 日韩视频亚洲视频| 亚洲欧洲中文日韩久久av乱码| 欧美成人免费在线观看| 亚洲精品在线观看免费| 亚洲全部视频| 欧美日韩国产一中文字不卡| 在线视频一区观看| 一区二区精品在线观看| 久久国产精品亚洲va麻豆| 国产在线播放一区二区三区| 久久九九电影| 久久在线播放| 日韩午夜在线| 这里只有视频精品| 国产日产高清欧美一区二区三区| 国产噜噜噜噜噜久久久久久久久 | 国产日产亚洲精品| 久久久久欧美| 美女日韩欧美| 99在线视频精品| 亚洲图片激情小说| 国产一区二区三区精品久久久| 开元免费观看欧美电视剧网站| 毛片一区二区| 一本久久综合亚洲鲁鲁| 亚洲免费在线| 黄色精品网站| 亚洲区国产区| 国产精品制服诱惑| 一区二区三区欧美成人| 亚洲亚洲精品三区日韩精品在线视频 | 亚洲午夜电影在线观看| 亚洲天堂视频在线观看| 狠狠色香婷婷久久亚洲精品| 国产日韩欧美黄色| 麻豆成人在线观看| 欧美激情第10页| 欧美一区二区三区在| 久久久一区二区| 一区二区三区四区在线| 午夜免费电影一区在线观看| 亚洲国产高清自拍| 一区二区久久久久| 激情久久久久| 日韩亚洲精品电影| 国产揄拍国内精品对白| 亚洲精品社区| 狠狠干狠狠久久| 亚洲精品国精品久久99热| 国产婷婷色一区二区三区四区| 欧美激情一区二区三区全黄| 久久久噜噜噜久久| 亚洲视频在线观看免费| 久久精品国产91精品亚洲| 99精品99久久久久久宅男| 午夜精品国产精品大乳美女| 亚洲激情婷婷| 欧美一级午夜免费电影| 亚洲伦伦在线| 亚洲午夜久久久久久尤物| 亚洲欧美另类中文字幕| 亚洲精品国久久99热| 午夜欧美大尺度福利影院在线看| 亚洲精品日韩在线| 欧美一区三区三区高中清蜜桃| 日韩午夜中文字幕| 午夜国产一区| 亚洲天堂成人在线视频| 亚洲欧洲一区二区三区在线观看| 亚洲欧美自拍偷拍| 一本一本久久a久久精品综合妖精| 午夜亚洲精品| 亚洲网站啪啪| 米奇777在线欧美播放| 久久电影一区| 欧美日韩精品系列| 欧美成人免费全部| 欧美电影在线观看完整版| 久久久久88色偷偷免费| 国产精品播放| 亚洲人成免费| 亚洲国产免费| 久久久久国产一区二区三区四区| 午夜激情一区| 欧美三日本三级少妇三99| 韩国精品在线观看| 一区二区三区产品免费精品久久75| 亚洲黄色一区二区三区| 欧美综合国产| 久久国产福利国产秒拍| 欧美午夜视频在线| 亚洲毛片一区| 亚洲乱码精品一二三四区日韩在线| 久久三级福利| 老司机精品久久| 国产尤物精品| 欧美在线播放一区| 欧美一区深夜视频| 国产精品视频观看| 亚洲素人一区二区| 亚洲桃花岛网站| 欧美日韩另类国产亚洲欧美一级| 亚洲电影免费在线观看| 亚洲福利在线观看| 亚洲日产国产精品| 亚洲精品女人| 欧美第一黄色网| 欧美日韩成人综合天天影院| 亚洲激情六月丁香| 亚洲精品乱码久久久久久蜜桃91 | 女仆av观看一区| 韩国av一区二区三区| 久久成人精品无人区| 久久午夜视频| 精品不卡在线| 久久综合久久综合久久| 欧美成年人网| 亚洲日本中文字幕免费在线不卡| 欧美69wwwcom| 亚洲国产精品免费| 一本色道久久综合亚洲精品高清 | 悠悠资源网久久精品| 久久亚洲捆绑美女| 亚洲动漫精品| 一本在线高清不卡dvd | 先锋影院在线亚洲| 欧美日韩中文精品| 亚洲午夜影视影院在线观看| 午夜精品久久久久久久99水蜜桃| 国产精品露脸自拍| 午夜精品久久久久久久蜜桃app| 久久精品国产免费观看| 一区二区三区在线视频播放| 久久综合成人精品亚洲另类欧美| 亚洲电影专区| 久久精品夜色噜噜亚洲aⅴ| 欧美大片专区| 在线一区二区视频| 国产精品综合不卡av| 久久国产福利国产秒拍| 欧美高清自拍一区| 99精品视频免费| 国产精品亚洲成人| 久久久久久夜| 国产精品一二三视频| 亚洲少妇最新在线视频| 久久久成人网| 亚洲黄色一区| 国产精品久久久久久久久久ktv| 欧美一级艳片视频免费观看| 欧美高清免费| 亚洲一区在线看| 国内精品久久国产| 欧美高清免费| 亚洲欧美韩国| 亚洲视频免费| 国产日韩欧美在线看| 久久这里只有| 一区二区电影免费在线观看| 久久男人资源视频| 99国产精品久久久久老师| 国产欧美日韩另类一区| 蜜臀久久99精品久久久画质超高清| 一区二区日韩|