亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Lucene索引文件格式的規格定義

2019-11-18 11:14:55
字體:
來源:轉載
供稿:網友

  本文定義了LUCene(版本1.3)用到的索引文件的格式。
  
  Jakarta Lucene是用java寫成的,同時有很多團體正在默默的用其他的程序語言來改寫它。假如這些新的版本想和Jakarta Lucene兼容,就需要一個與具體語言無關的Lucene索引文件格式。本文正是試圖提供一個完整的與語言無關的Jakarta Lucene 1.3索引文件格式的規格定義。
  
  隨著Lucene不斷發展,本文也應該更新。不同語言寫成的Lucene實現版本應當盡力遵守文件格式,也必須產生本文的新版本。
  
  本文同時提供兼容性批注,描述文件格式上與前一版本不同的地方。
  
  定義 
  Lucene中最基礎的概念是索引(index),文檔(document.,域(field)和項(term)。
  
  索引包含了一個文檔的序列。
  
  ?  文檔是一些域的序列。
  
  ?  域是一些項的序列。
  
  ?  項就是一個字串。
  
  存在于不同域中的同一個字串被認為是不同的項。因此項實際是用一對字串表示的,第一個字串是域名,第二個是域中的字串。
  
  倒排索引
  為了使得基于項的搜索更有效率,索引中項是靜態存儲的。Lucene的索引屬于索引方式中的倒排索引,因為對于一個項這種索引可以列出包含它的文檔。這剛好是文檔與項自然聯系的倒置。
  
  域的類型 
  Lucene中,域的文本可能以逐字的非倒排的方式存儲在索引中。而倒排過的域稱為被索引過了。域也可能同時被存儲和被索引。
  
  域的文本可能被分解許多項目而被索引,或者就被用作一個項目而被索引。大多數的域是被分解過的,但是有些時候某些標識符域被當做一個項目索引是很有用的。
  
  段(Segment) 
  Lucene索引可能由多個子索引組成,這些子索引成為段。每一段都是完整獨立的索引,能被搜索。索引是這樣作成的:
  
  1.  為新加入的文檔創建新段。
  
  2.  合并已經存在的段。
  
  搜索時需要涉及到多個段和/或者多個索引,每一個索引又可能由一些段組成。
  
  文檔號(document.nbspNumber) 
  內部的來說,Lucene用一個整形(interger)的文檔號來指示文檔。第一個被加入到索引中的文檔就是0號,順序加入的文檔將得到一個由前一個號碼遞增而來的號碼。
  
  注重文檔號是可能改變的,所以在Lucene外部存儲這些號碼時必須小心。非凡的,號碼的改變的情況如下:
  
  ?  只有段內的號碼是相同的,不同段之間不同,因而在一個比段廣泛的上下文環境中使用這些號碼時,就必須改變它們。標準的技術是根據每一段號碼多少為每一段分配一個段號。將段內文檔號轉換到段外時,加上段號。將某段外的文檔號轉換到段內時,根據每段中可能的轉換后號碼范圍來判定文檔屬于那一段,并減調這一段的段號。例如有兩個含5個文檔的段合并,那么第一段的段號就是0,第二段段號5。第二段中的第三個文檔,在段外的號碼就是8。
  
  ?  文檔刪除后,連續的號碼就出現了間斷。這可以通過合并索引來解決,段合并時刪除的文檔相應也刪掉了,新合并而成的段并沒有號碼間斷。
  
  緒論
  索引段維護著以下的信息:
  
  ?  域集合。包含了索引中用到的所有的域。
  
  ?  域值存儲表。每一個文檔都含有一個“屬性-值”對的列表,屬性即為域名。這個列表用來存儲文檔的一些附加信息,如標題,url或者訪問數據庫的一個ID。在搜索時存儲域的集合可以被返回。這個表以文檔號標識。
  
  ?  項字典。這個字典含有所有文檔的所有域中使用過的的項,同時含有使用過它的文檔的文檔號,以及指向使用頻數信息和位置信息的指針。
  
  ?  項頻數信息。對于項字典中的每個項,這些信息包含含有這個項的文檔的總數,以及每個文檔中使用的次數。
  
  ?  項位置信息。對于項字典中的每個項,都存有在每個文檔中出現的各個位置。
  
  ?  Normalization factors. For each field in each document. a value is stored that is multiplied into the score for hits on that field. 標準化因子。對于文檔中的每一個域,存有一個值,用來以后乘以這個這個域的命中數(hits)。
  
  ?  被刪除的文檔信息。這是一個可選文件,用來表明那些文檔已經刪除了。
  
  接下來的各部分部分具體描述這些信息。
  
  文件的命名(File Naming)
  同屬于一個段的文件擁有相同的文件名,不同的擴展名。擴展名由以下討論的各種文件格式確定。
  
  一般來說,一個索引存放一個目錄,其所有段都存放在這個目錄里,盡管我們不要求您這樣做。
  
  基本數據類型(PRimitive Types)
  Byte
  
  最基本的數據類型就是字節(byte,8位)。文件就是按字節順序訪問的。其它的一些數據類型也定義為字節的序列,文件的格式具有字節意義上的獨立性。
  
  UInt32
  
  32位無符號整數,由四個字節組成,高位優先。
  
  UInt32 --> 4
  
  Uint64
  
  64位無符號整數,由八字節組成,高位優先。
  
  UInt64 --> 8
  
  VInt
  
  可變長的正整數類型,每字節的最高位表明還剩多少字節。每字節的低七位表明整數的值。因此單字節的值從0到127,兩字節值從128到16,383,等等。
  
  VInt 編碼示例
  
  value
   First byte
   Second byte
   Third byte 
  0
   00000000
  
  1
   00000001
  
  2
   00000010 
  ...
  
  127
   01111111
  
  128
   10000000
   00000001
   
  129
   10000001
   00000001
   
  130
   10000010
   00000001
  ...
  
  16,383
   11111111
   01111111
  
  16,384
   10000000
   10000000
   00000001
  
  16,385
   10000001
   10000000
   00000001
  
  ...
  
  這種編碼提供了一種在高效率解碼時壓縮數據的方法。
  
  Chars
  
  Lucene輸出UNICODE字符序列,使用標準UTF-8編碼。
  
  String
  
  Lucene輸出由VINT和字符串組成的字串,VINT表示字串長,字符串緊接其后。
  
  String --> VInt, Chars
  
  索引包含的文件(Per-Index Files)
  這部分介紹每個索引包含的文件。
  
  Segments文件
  索引中活動的段存儲在Segments文件中。每個索引只能含有一個這樣的文件,名為"segments".這個文件依次列出每個段的名字和每個段的大小。
  
  Segments --> SegCount, SegCount
  
  SegCount, SegSize --> UInt32
  
  SegName --> String
  
  SegName表示該segment的名字,同時作為索引其他文件的前綴。
  
  SegSize是段索引中含有的文檔數。
  
  Lock文件
  有一些文件用來表示另一個進程在使用索引。
  
  ?  假如存在"commit.lock"文件,表示有進程在寫"segments"文件和刪除無用的段索引文件,或者表示有進程在讀"segments"文件和打開某些段的文件。在一個進程在讀取"segments"文件段信息后,還沒來得及打開所有該段的文件前,這個Lock文件可以防止另一個進程刪除這些文件。
  
  ?  假如存在"index.lock"文件,表示有進程在向索引中加入文檔,或者是從索引中刪除文檔。這個文件防止很多文件同時修改一個索引。
  
  Deleteable文件
  名為"deletetable"的文件包含了索引不再使用的文件的名字,這些文件可能并沒有被實際的刪除。這種情況只存在與Win32平臺下,因為Win32下文件仍打開時并不能刪除。
  
  Deleteable --> DelableCount, DelableCount
  
  DelableCount --> UInt32
  
  DelableName --> String
  
  段包含的文件(Per-Segment Files)
  剩下的文件是每段中包含的文件,因此由后綴來區分。
  
  域(Field)
  
  域集合信息(Field Info)
  所有域名都存儲在這個文件的域集合信息中,這個文件以后綴.fnm結尾。
  
  FieldInfos (.fnm) --> FieldsCount, FieldsCount
  
  FieldsCount --> VInt
  
  FieldName --> String
  
  FieldBits --> Byte
  
  目前情況下,FieldBits只有使用低位,對于已索引的域值為1,對未索引的域值為0。
  
  文件中的域根據它們的次序編號。因此域0是文件中的第一個域,域1是接下來的,等等。這個和文檔號的編號方式相同。
  
  域值存儲表(Stored Fields)
  域值存儲表使用兩個文件表示:
  
  1.  域索引(.fdx文件)。
  
  如下,對于每個文檔這個文件包含指向域值的指針:
  
  FieldIndex (.fdx) --> SegSize
  
  FieldvaluesPosition --> Uint64
  
  FieldvaluesPosition指示的是某一文檔的某域的域值在域值文件中的位置。因為域值文件含有定

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九热视频这里只有精品| 亚洲一区二区久久| 欧美风情在线观看| 日本精品久久中文字幕佐佐木| www.欧美精品| 欧美乱大交xxxxx另类电影| 国产一区二区三区在线观看视频| 中日韩美女免费视频网址在线观看| 在线播放日韩精品| 亚洲精品免费一区二区三区| 国产v综合ⅴ日韩v欧美大片| 亚洲国产天堂久久综合网| 中文字幕精品一区二区精品| 亚洲午夜av久久乱码| 亚洲国产精品久久久久秋霞蜜臀| 成人午夜黄色影院| 亚洲欧美国产制服动漫| 日韩精品久久久久久久玫瑰园| 亚洲精品一区久久久久久| 欧美在线视频一区| 欧美亚洲在线观看| 亚洲一区亚洲二区亚洲三区| 精品久久久在线观看| 久久久亚洲精品视频| 97精品久久久中文字幕免费| 成人黄色激情网| 国产suv精品一区二区三区88区| 国产欧美日韩高清| 国产精品对白刺激| 亚洲精品日韩在线| 中文字幕日韩电影| 亚洲电影免费观看高清完整版| 欧美中文字幕视频在线观看| 国产手机视频精品| 一区二区在线免费视频| 日本亚洲欧美成人| 欧美在线性爱视频| 在线电影欧美日韩一区二区私密| 久久福利视频网| 欧美视频精品一区| 91色精品视频在线| 日韩av中文字幕在线播放| 欧美成人在线影院| 日韩在线欧美在线国产在线| 欧美日本啪啪无遮挡网站| 亚洲自拍偷拍色片视频| 欧美激情一区二区三区久久久| 青草成人免费视频| 国模私拍一区二区三区| 亚洲精品在线91| 亚洲二区在线播放视频| 国产精品美乳在线观看| 成人国内精品久久久久一区| 久久久精品国产一区二区| 国产999精品久久久影片官网| 亚洲最新av网址| 久久亚洲精品成人| 亚洲国产欧美一区| 国产视频福利一区| 欧美电影免费观看大全| 亚洲国产97在线精品一区| 国产原创欧美精品| 欧美激情一区二区久久久| 国产精品黄色影片导航在线观看| 日韩在线观看免费高清| xxxxx成人.com| 欧美日韩免费在线| 日韩成人激情在线| 欧美中文字幕视频在线观看| 久久国产精彩视频| 国产一区二区三区精品久久久| 日韩视频免费在线观看| 亚洲天堂av高清| 国产女人18毛片水18精品| 欧美激情一区二区三区高清视频| 午夜精品久久久久久99热| 欧美日韩xxxxx| 欧美最猛性xxxxx(亚洲精品)| 国产丝袜一区视频在线观看| 97久久国产精品| 日韩电影免费观看中文字幕| 久久久久999| 亚洲日韩欧美视频一区| 欧美高清电影在线看| 日韩成人xxxx| 91色视频在线导航| 91视频九色网站| 亚洲性猛交xxxxwww| 社区色欧美激情 | 久久精品视频网站| 亚洲91av视频| 亚洲aⅴ日韩av电影在线观看| 日韩中文字幕在线观看| 久久久久五月天| 国产99视频精品免视看7| 美女福利精品视频| 久久久av一区| 亚洲国产精品嫩草影院久久| 国产精品免费视频久久久| 久久精品国产免费观看| 国产98色在线| 亚洲欧美资源在线| 亚洲久久久久久久久久久| 欧美性猛交xxxx偷拍洗澡| 成人午夜激情网| 欧美肥臀大乳一区二区免费视频| 欧美成人免费网| 欧美成人在线免费| 色妞欧美日韩在线| 国产一区二区三区视频在线观看| 午夜精品一区二区三区视频免费看| 欧美丝袜第一区| 亚洲国产精品久久久久秋霞蜜臀| 久久99视频免费| 色青青草原桃花久久综合| 伊人久久久久久久久久久久久| 亚洲男女性事视频| 亚洲国产精品va在看黑人| 国产精品色婷婷视频| 国产精品91久久| 日韩经典中文字幕在线观看| 亚洲日本成人网| 日本高清久久天堂| 亚洲乱码一区二区| 久久亚洲精品毛片| 日本不卡免费高清视频| 中文字幕在线观看日韩| 亚洲欧洲国产精品| 91地址最新发布| 国产精品视频公开费视频| 日韩美女视频中文字幕| 中文字幕日本精品| 色yeye香蕉凹凸一区二区av| 国产精品久久久精品| 久热精品视频在线观看| 宅男66日本亚洲欧美视频| 亚洲国产中文字幕久久网| 97视频免费观看| 日韩精品在线免费播放| 欧美多人乱p欧美4p久久| 亚洲最大在线视频| 欧美日韩国产色视频| 第一福利永久视频精品| 久久久久久久久久亚洲| 国产精品成熟老女人| 国产日本欧美一区二区三区在线| 日本在线观看天堂男亚洲| 91av视频在线播放| 久久久久久久国产精品视频| 欧美激情小视频| 在线观看国产精品淫| 亚洲国产精品va在线看黑人动漫| 一区二区日韩精品| 亚洲精选一区二区| 久久久噜噜噜久久| 高清日韩电视剧大全免费播放在线观看| 亚洲男人天堂2023| 欧美黑人狂野猛交老妇| 精品一区二区三区三区| 欧美激情视频一区二区| 国产一区二区三区丝袜| 欧洲一区二区视频| 亚洲日韩欧美视频一区| 欧美最顶级的aⅴ艳星|