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

Javen-Studio 咖啡小屋

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

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

Annotated Lucene(中文版)

Annotated Lucene 作者:naven


3           索引類關(guān)系圖

下面逐個(gè)介紹與建立索引有關(guān)的一些類及它們的關(guān)系。 

 

3.1      org.apache.lucene.store.IndexWriter

一個(gè)IndexWriter對(duì)象只創(chuàng)建并維護(hù)一個(gè)索引。IndexWriter通過(guò)指定存放的目錄(Directory)以及文檔分析器(Analyzer)來(lái)構(gòu)建,direcotry代表索引存儲(chǔ)(resides)在哪里;analyzer表示如何來(lái)分析文檔的內(nèi)容;similarity用來(lái)規(guī)格化(normalize)文檔,給文檔算分(scoring);IndexWriter類里還有一些SegmentInfos對(duì)象用于存儲(chǔ)索引片段信息,以及發(fā)生故障回滾等。以下是它們的類圖:


 

3.2       org.apache.lucene.store.Directory

一個(gè)Directory對(duì)象是一系列統(tǒng)一的文件列表(a flat list of files)。文件可以在它們被創(chuàng)建的時(shí)候一次寫入,一旦文件被創(chuàng)建,它再次打開后只能用于讀取(read)或者刪除(delete)操作。并且同時(shí)在讀取和寫入的時(shí)候允許隨機(jī)訪問(wèn)(random access)。

在這里并不直接使用Java I/O API,但是更確切地說(shuō),所有I/O操作都是通過(guò)這個(gè)API處理的。這使得讀寫操作方式更統(tǒng)一起來(lái),如基于內(nèi)存的索引(RAM-based indices)的實(shí)現(xiàn)(即RAMDirectory)、通過(guò)JDBC存儲(chǔ)在數(shù)據(jù)庫(kù)中的索引、將一個(gè)索引存儲(chǔ)為一個(gè)文件的實(shí)現(xiàn)(即FSDirectory)。

Directory的鎖機(jī)制是一個(gè)LockFactory的實(shí)例實(shí)現(xiàn)的,可以通過(guò)調(diào)用Directory實(shí)例的setLockFactory()方法來(lái)更改。


 

3.3       org.apache.lucene.store.FSDirectory

FSDirectory類直接實(shí)現(xiàn)Directory抽象類為一個(gè)包含文件的目錄。目錄鎖的實(shí)現(xiàn)使用缺省的SimpleFSLockFactory,但是可以通過(guò)兩種方式修改,即給getLockFactory()傳入一個(gè)LockFactory實(shí)例,或者通過(guò)調(diào)用setLockFactory()方法明確制定LockFactory類。

目錄將被緩存(cache)起來(lái),對(duì)一個(gè)指定的符合規(guī)定的路徑(canonical path)來(lái)說(shuō),同樣的FSDirectory實(shí)例通常通過(guò)getDirectory()方法返回。這使得同步機(jī)制(synchronization)能對(duì)目錄起作用。


 

3.4       org.apache.lucene.store.RAMDirectory

RAMDirectory類是一個(gè)駐留內(nèi)存的(memory-residentDirectory抽象類的實(shí)現(xiàn)。目錄鎖的實(shí)現(xiàn)使用缺省的SingleInstanceLockFactory,但是可以通過(guò)setLockFactory()方法修改。

 

 

 

3.5       org.apache.lucene.store.IndexInput

IndexInput類是一個(gè)為了從一個(gè)目錄(Directory)中讀取文件的抽象基類,是一個(gè)隨機(jī)訪問(wèn)(random-access)的輸入流(input stream),用于所有Lucene讀取Index的操作。BufferedIndexInput是一個(gè)實(shí)現(xiàn)了帶緩沖的IndexInput的基礎(chǔ)實(shí)現(xiàn)。


 

3.6       org.apache.lucene.store.IndexOutput

IndexOutput類是一個(gè)為了寫入文件到一個(gè)目錄(Directory)中的抽象基類,是一個(gè)隨機(jī)訪問(wèn)(random-access)的輸出流(output stream),用于所有Lucene寫入Index的操作。BufferedIndexOutput是一個(gè)實(shí)現(xiàn)了帶緩沖的IndexOutput的基礎(chǔ)實(shí)現(xiàn)。RAMOuputStream是一個(gè)內(nèi)存駐留(memory-resident)的IndexOutput的實(shí)現(xiàn)類。


 

3.7       org.apache.lucene.store.Analyzer

Analyzer類構(gòu)建用于分析文本的TokenStream對(duì)象,因此(thus)它表示(represent)用于從文本中分解(extract)出組成索引的terms的一個(gè)規(guī)則器(policy)。典型的(typical)實(shí)現(xiàn)首先創(chuàng)建一個(gè)Tokenizer,它將那些從Reader對(duì)象中讀取字符流(stream of characters)打碎為(break into)原始的Tokensraw Tokens)。然后一個(gè)或更多的TokenFilters可以應(yīng)用在這個(gè)Tokenizer的輸出上。警告:你必須在你的子類(subclass)中覆寫(override)定義在這個(gè)類中的其中一個(gè)方法,否則的話Analyzer將會(huì)進(jìn)入一個(gè)無(wú)限循環(huán)(infinite loop)中。


 

3.8       org.apache.lucene.store.StandardAnalyzer

StandardAnalyzer類是使用一個(gè)Englishstop words列表來(lái)進(jìn)行tokenize分解出文本中word,使用StandardTokenizer類分解詞,再加上StandardFilter以及LowerCaseFilter以及StopFilter這些過(guò)濾器進(jìn)行處理的這樣一個(gè)Analyzer類的實(shí)現(xiàn)。


 

3.9       org.apache.lucene.search. Similarity

Similarity類實(shí)現(xiàn)算分(scoring)的API,它的子類實(shí)現(xiàn)了檢索算分的算法。DefaultSimilarity類是缺省的算分的實(shí)現(xiàn),SimilarityDelegator類是用于委托算分(delegating scoring)的實(shí)現(xiàn),在Query.getSimilarity(Searcher)}的實(shí)現(xiàn)里起作用,以便覆寫(override)一個(gè)SearcherSimilarity實(shí)現(xiàn)類的僅有的確定方法(certain methods)。



 

查詢q相對(duì)于文檔d的分?jǐn)?shù)與在文檔和查詢向量(query vectors)之間的余弦距離(cosing-distance)或者點(diǎn)乘積(dot-product)有關(guān)系(correlates to),文檔和查詢向量存于一個(gè)信息檢索(Information Retrieval)的向量空間模型(Vector Space Model (VSM))之中。一篇文檔的向量與查詢向量越接近(closer to),它的得分也越高(scored higher),這個(gè)分?jǐn)?shù)按如下公式計(jì)算:

 


 

其中:

1.          tf(t in d) term的出現(xiàn)次數(shù)(frequency)有關(guān)系(correlate to),定義為(defined asterm t在當(dāng)前算分(currently scored)的文檔d中出現(xiàn)(appear in)的次數(shù)(number of times)。對(duì)一個(gè)給定(gived)的term,那些出現(xiàn)此term的次數(shù)越多(more occurences)的文檔將獲得越高的分?jǐn)?shù)(higher score)。缺省的tf(t in d)算法實(shí)現(xiàn)在DefaultSimilarity類中,公式如下:


 

2.          idf(t) 代表(stand for)反轉(zhuǎn)文檔頻率(Inverse Document Frequency)。這個(gè)分?jǐn)?shù)與反轉(zhuǎn)(inverse of)的docFreq(出現(xiàn)過(guò)term t的文檔數(shù)目)有關(guān)系。這個(gè)分?jǐn)?shù)的意義是越不常出現(xiàn)(rarer)的term將為最后的總分貢獻(xiàn)(contribution)更多的分?jǐn)?shù)。缺省idff(t in d)算法實(shí)現(xiàn)在DefaultSimilarity類中,公式如下:

 

3.          coord(q,d) 是一個(gè)評(píng)分因子,基于(based on)有多少個(gè)查詢terms在特定的文檔(specified document)中被找到。通常(typically),一篇包含了越多的查詢terms的文檔將比另一篇包含更少查詢terms的文檔獲得更高的分?jǐn)?shù)。這是一個(gè)搜索時(shí)的因子(search time factor)是在搜索的時(shí)候起作用(in effect at search time),它在Similarity對(duì)象的coord(q,d)函數(shù)中計(jì)算。

4.          queryNorm(q) 是一個(gè)修正因子(normalizing factor),用來(lái)使不同查詢間的分?jǐn)?shù)更可比較(comparable)。這個(gè)因子不影響文檔的排名(ranking)(因?yàn)樗阉髋藕眯虻奈臋n(ranked document)會(huì)增加(multiplied)相同的因數(shù)(same factor)),更確切地說(shuō)只是(but rather just)為了嘗試(attempt to)使得不同查詢條件(甚至不同索引(different indexes))之間更可比較性。這是一個(gè)搜索時(shí)的因子是在搜索的時(shí)候起作用,由Similarity對(duì)象計(jì)算。缺省queryNorm(q)算法實(shí)現(xiàn)在DefaultSimilarity類中,公式如下:

 

sumOfSquaredWeights(查詢的terms)是由查詢Weight對(duì)象計(jì)算的,例如一個(gè)布爾(boolean)條件查詢的計(jì)算公式為:

 

5.          t.getBoost() 是一個(gè)搜索時(shí)(search time)的代表查詢q中的term tboost數(shù)值,具體指定在(as specified in)查詢的文本中(參見查詢語(yǔ)法),或者由應(yīng)用程序調(diào)用setBoost()來(lái)指定。需要注意的是實(shí)際上(really)沒有一個(gè)直接(direct)的API來(lái)訪問(wèn)(accessing)一個(gè)多個(gè)term的查詢(multi term query)中的一個(gè)term boost值,更確切地說(shuō)(but rather),多個(gè)termsmulti terms)在一個(gè)查詢里的表示形式(represent as)是多個(gè)TermQuery對(duì)象,所以查詢里的一個(gè)termboost值的訪問(wèn)是通過(guò)調(diào)用子查詢(sub-query)的getBoost()方法實(shí)現(xiàn)的。

6.          norm(t,d) 是提煉取得(encapsulate)一小部分boost值(在索引時(shí)間)和長(zhǎng)度因子(length factor):

ú            document boost 在添加文檔到索引之前通過(guò)調(diào)用doc.setBoost()來(lái)設(shè)置。

ú            Field boost 在添加Field到文檔之前通過(guò)調(diào)用field.setBoost()來(lái)設(shè)置。

ú            lengthNorm(field)在文檔添加到索引的時(shí)候,根據(jù)(in accordance with)文檔中該fieldtokens數(shù)目計(jì)算得出,所以更短(shorter)的field會(huì)貢獻(xiàn)更多的分?jǐn)?shù)。lengthNorm是在索引的時(shí)候起作用,由Similarity類計(jì)算得出。

當(dāng)一篇文檔被添加到索引的時(shí)候,所有上面計(jì)算出的因子將相乘起來(lái)(multiplied)。如果文檔擁有多個(gè)相同名字的fieldsmultiple fields with same name),所有這些fieldsboost值也會(huì)被一起相乘起來(lái)(multiplied together):

 

然而norm數(shù)值的結(jié)果在被存儲(chǔ)(stored)之前被編碼成(encoded as)一個(gè)單獨(dú)的字節(jié)(single byte)。在檢索的時(shí)候,這個(gè)norm字節(jié)值從索引目錄(index directory)中讀取出來(lái),并解碼回(decoded back)一個(gè)norm浮點(diǎn)數(shù)值(float value)。這個(gè)編/解碼(encoding/decoding)行為,會(huì)縮減(reduce)索引的大小(index size),這得自于(come with)精度損耗的代價(jià)(price of precision loss- 它不保證decode(encode(x))=x,舉例來(lái)說(shuō)decode(encode(0.89))=0.75。還有需要注意的是,檢索的時(shí)候再修改評(píng)分(scoring)的這個(gè)norm部分已近太遲了,例如,為檢索使用不同的Similarity






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

 

posted on 2007-05-05 01:57 Javen-Studio 閱讀(2521) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   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>
            黄色精品一区二区| 久久久久久网| 亚洲欧美视频在线观看视频| 中日韩美女免费视频网址在线观看| 欧美激情二区三区| aa级大片欧美三级| 亚洲欧美国产va在线影院| 国产精品亚洲网站| 久久精品亚洲| 亚洲精品女人| 亚洲精品一区二区三区婷婷月| 欧美高清hd18日本| 国产精品蜜臀在线观看| 欧美视频一二三区| 中文有码久久| 久久免费精品视频| 日韩一级不卡| 国产精品视频九色porn| 久久嫩草精品久久久精品| 亚洲精品在线观看免费| 久久精选视频| 一区二区三区色| 国产自产高清不卡| 欧美性开放视频| 久久久久se| 亚洲香蕉伊综合在人在线视看| 久久久久久久网| 在线亚洲成人| 伊人久久久大香线蕉综合直播| 欧美日韩一区二区高清| 久久精品亚洲国产奇米99| 一区二区三区欧美日韩| 欧美成人在线免费视频| 久久成人免费网| 亚洲无线视频| 亚洲人体大胆视频| 国产在线视频欧美| 国产精品尤物福利片在线观看| 欧美福利专区| 美国成人直播| 久久久精品动漫| 香蕉久久夜色精品国产| 在线视频亚洲欧美| 亚洲精品中文字幕有码专区| 欧美成人亚洲| 免费中文日韩| 免费不卡亚洲欧美| 久久久之久亚州精品露出| 欧美在线亚洲一区| 欧美一区免费视频| 欧美亚洲一区二区在线观看| 亚洲一区二区在线看| 中文日韩在线| 亚洲一级黄色片| 亚洲一区在线观看视频| 亚洲免费视频观看| 午夜日韩视频| 久久精品欧美日韩精品| 久久男人资源视频| 久久精品盗摄| 久久亚洲春色中文字幕久久久| 久久精品一区二区三区四区 | 在线日韩电影| 一区二区三区日韩精品| 亚洲精品一品区二品区三品区| 免费成人小视频| 久久免费高清视频| 欧美国产日本韩| 亚洲黄色免费| 亚洲精品美女在线| 99re6这里只有精品| 99精品视频免费| 亚洲自拍另类| 久久久久成人精品| 欧美高清影院| 国产精品视频不卡| 激情久久婷婷| 亚洲美女色禁图| 午夜精品福利一区二区蜜股av| 久久精品国产免费观看| 裸体一区二区| 亚洲视频欧美视频| 久久久久成人精品| 欧美日韩亚洲另类| 国内精品一区二区三区| 最新成人av网站| 欧美亚洲午夜视频在线观看| 久久视频在线视频| 最近中文字幕日韩精品 | 午夜老司机精品| 久久综合狠狠综合久久综合88 | 欧美成人免费全部| 正在播放亚洲| 久久中文字幕一区| 国产精品一区二区三区免费观看 | 欧美在线观看视频在线| 欧美成人精品激情在线观看| 国产精品乱码一区二区三区| 亚洲第一天堂av| 欧美一区久久| 亚洲精品一区二| 久久精品视频亚洲| 国产精品香蕉在线观看| 亚洲激情av| 久久久久网址| 亚洲网址在线| 欧美日韩久久| 伊人久久亚洲热| 欧美怡红院视频| 亚洲狼人精品一区二区三区| 久久久精品999| 国产欧美一区二区精品性色| 国产一区二区久久久| 亚洲国产精品久久久| 欧美一区二区三区四区夜夜大片| 欧美福利电影网| 久久久国产精品亚洲一区| 国产精品福利在线观看| 亚洲精品在线看| 欧美成年视频| 久久先锋资源| 激情欧美一区二区三区| 欧美中文字幕在线| 午夜精品福利在线| 国产伦精品一区二区三区视频孕妇 | 久久综合网络一区二区| 国产日本欧美视频| 小黄鸭精品密入口导航| 一本久久a久久精品亚洲| 欧美日韩国产123| 99精品国产在热久久| 亚洲第一视频| 欧美高清视频在线播放| 亚洲理论在线| 亚洲精品少妇网址| 欧美视频中文字幕| 亚洲一区二区三区视频播放| 99精品视频一区| 国产精品每日更新| 久久精品99| 久久综合999| 亚洲人成亚洲人成在线观看| 亚洲日韩中文字幕在线播放| 欧美精品观看| 亚洲一区久久| 午夜精品免费视频| 国外成人在线| 免费观看成人| 欧美极品一区| 欧美亚洲一区二区在线观看| 小黄鸭视频精品导航| 在线精品亚洲| 欧美国产一区二区在线观看| 欧美欧美午夜aⅴ在线观看| 亚洲一区三区视频在线观看| 欧美一区二区三区免费观看视频| 国内精品久久久久久久影视麻豆| 美国十次了思思久久精品导航| 免费久久99精品国产| 亚洲一区二区久久| 久久riav二区三区| 99视频精品在线| 午夜在线精品偷拍| 亚洲精品在线视频| 亚洲欧美一区二区精品久久久| 亚洲第一在线视频| 99精品福利视频| 亚洲一区二区三区中文字幕在线| 亚洲影院一区| 久久精品视频va| 在线视频精品一| 欧美亚洲三区| 亚洲少妇一区| 久久理论片午夜琪琪电影网| 一本久道久久综合狠狠爱| 午夜精品久久| 一本色道久久综合亚洲精品按摩| 亚洲免费视频网站| 洋洋av久久久久久久一区| 亚洲欧美日韩综合| 亚洲婷婷综合色高清在线 | 野花国产精品入口| 海角社区69精品视频| 亚洲最新在线视频| 亚洲欧洲一区二区在线播放| 欧美一区二区三区四区在线观看| 日韩网站在线看片你懂的| 久久久99免费视频| 久久er99精品| 国产精品视频网站| 亚洲免费电影在线| 亚洲精品国产拍免费91在线| 久久精彩视频| 久久久久久网站| 欧美午夜国产| 9色porny自拍视频一区二区| 亚洲免费精品| 欧美精品在线免费观看| 欧美激情精品久久久| 亚洲国产精品成人综合|