solr從1.4版本開始,提供了一種字段型別triefield(trielongfield、trieintfield等),用於範圍查詢,效能比普通的數值型別要快10倍。為什麼會快那麼多呢?網上找不到相關資料,通過分析源**,大概了解了其原理,給大家分享下。
其中precisionstep代表字段值分段儲存的時候,截斷精度的大小。一般來說,其值越小,索引大小越大,查詢速度越快。
查詢的過程:
1、將查詢的範圍a~b的上下界a、b值,取出最高8位,標記為a1、b1,到第一段找在(a1~b1)內的term,得到需要查詢的termlist1
2、繼續取a、b值的最高16位,標記為a2、b2,到第二段來查在(a2~a1 11111111]和[b1 11111111,b2)範圍內的term,得到termlist2
3、繼續取a、b值的最高24位,標記為a3、b3,到第三段來查在(a3~a2 11111111]和[b2 11111111,b3)範圍內的term,得到termlist3
4、繼續取a、b值的最高24位,也即a、b值,到第四段來查詢[a~a3 11111111]和[b3 11111111,b]範圍內的term,得到termlist4
5、最後查詢這些term,歸併,就得到了符合查詢條件的docid了。從上面的描述,我們可以看到,需要查詢的term最多為254+2552+2552+256*2=1786個,傳統的方式a~b個term要小的多,因此效能有很大的提公升。
本文**於"阿里中介軟體團隊播客",原文發表時間"2012-05-05 "
Solr的TrieField範圍查詢分析
solr從1.4版本開始,提供了一種字段型別triefield trielongfield trieintfield等 用於範圍查詢,效能比普通的數值型別要快10倍。為什麼會快那麼多呢?網上找不到相關資料,通過分析源 大概了解了其原理,給大家分享下。其中precisionstep代表字段值分段儲存的...
范型的轉變
還是回到上次聽講座的時候,第一部分的就是 范型的轉變 其中的內容主要講了瀑布式模型怎麼在一開始就不成立,而因為誤解卻廣為傳播。同時,迭代式開發也並非是瀑布式開發的後繼者或者改良,而是同步發展的另一種對軟體開發的思維方式。也就是另一種范型。呵呵,兩頭牛在聊天,一頭說 最近瘋牛症很流行啊?搞得我擔心的都...
generics 范型 的使用
什麼是范型?u system.collections.generic命名空間包含了范型集合需要的類和介面 u 我們在寫程式的時候 經常需要這種東西 可變長度的 array,比如說乙個 string 而事實上定義了乙個 string 並初始化後那麼它的長度就固定了 array 根本做不到 如果非要實現...