一. .索引優化背景
由於我所在的公司也用到lucene做搜尋,所以相應學習了下。
二. .索引優化方法
目前來說有幾種比較常見的優化方法:
1. 設定indexwriterconfig中mergefactor的值.
mergefactor即合併因子,當大小相當的段的數量達到此值的時候開始合併。
注意:mergefactor應設在(2-10)之間,mergefactor越小,建立索引的時候占用記憶體越小,所以建立索引速度慢,但是反向索引時速度快;
mergefactor越大,建立索引的時候占用記憶體越大,所以建立索引速度快,但是反向索引時速度慢。
合併策略:比如 mergefactor=3,開始來的段大小為 10m,當湊夠 3 個 10m 的時候, 0.cfs, 1.cfs, 2.cfs則合併成乙個新的段 3.cfs,大小為 30m,然後再來 4.cfs, 5.cfs, 6.cfs,合併成 7.cfs,大小為 30m,然後再來 8.cfs, 9.cfs, a.cfs 合併成 b.cfs, 大小為 30m,這時候又湊夠了 3 個30m 的,合併成 90m 的 c.cfs,然後又來 d.cfs, e.cfs, f.cfs 合併成 10.cfs,大小為 30m,然後 11.cfs 大小為 10m,這時候硬碟上的段為: c.cfs(90m) 10.cfs(30m),11.cfs(10m)。
2. 排除停用詞
什麼是停用詞?停用詞就是沒有實際意義不參與索引的詞。比如,"這是一首簡單的小情歌!"其中『這是』、『的』就可以當做停用詞排除掉,被分詞器過濾掉後,就不會建立索引,這樣索引檔案就會變小,搜尋的時候就會變快。在庖丁分詞器中,就可以自定義停用詞和自己的詞典。
3. 將索引資料分割槽存放
為什麼要分割槽存放?假如咱們手上有海量的各種資料,比如音訊,**,新聞,遊戲。。如果分割槽存放的話,使用者只需在小範圍區間搜尋就行了,可以很大程度提高檢索速度減少伺服器壓力。這在某種方式上類似於分流。
4. 將硬碟上的索引檔案放入記憶體中提公升索引速度
[html]view plain
copy
?//索引放在硬碟上
directory dir = fsdirectory.open(new file(indexpath));
//索引放在記憶體中
iocontext ioc = new iocontext();
directory ramdic = new ramdirectory(dir, ioc);
//然後將ramdic傳入indexreader
indexreader reader = directoryreader.open(ramdic);
indexsearcher searcher = new indexsearcher(reader);
//...
5. 在查詢時優化
查詢分為termquery(以term為單位查詢)、multifieldqueryparser(字串查詢,將字串分割為單個字元)、matchalldocsquery(查詢所有)、numericrangequery(範圍查詢,效能較過濾器高)、wildcardquery(萬用字元查詢,?為佔位符,*匹配所有)、fuzzyquery(模糊查詢,其中構造器第二個引數代表可缺少字元數)
網頁速度優化
一 我們需達解決的麻煩 減小被請求檔案大小,減少請求資料占用的網路頻寬.讓使用者更快的看到想要的結果.提高客戶端渲染速度.讓瀏覽器同時能請求更多的資料.提高伺服器相應速度.通過版本化控制客戶端cache.二 如何解決我們的麻煩 a.如何減少http請求數 合併js檔案跟css檔案。合併框架以及相對變...
優化網頁速度
1 優化2 影象格式的選擇 一般在網頁上使用的格式有三種,jpg png gif.三 種格式的具體技術指標不是這篇文章 的內容,我們只需要知道在什麼時候應該使用什麼格式,以減少網頁的載入時間。1 jpg 一 般用於展示風景 人物 藝術照的攝影作品。有時也用在電腦截圖上。2 gif 提供的顏色較少,可...
OpenCV svd速度優化
在發現opencv執行svd compute 過程太慢,一張299 299的debug要幾s,release也要0.5s。第一次嘗試 將299 299影象分成13份23 299的影象執行svd。release模式下能達到0.25s,將近快一倍。第二次 加上umat,成績感人。release模式下速度...