提高Lucene Filter對搜尋結果過濾的效能

2021-08-30 11:48:00 字數 607 閱讀 3741

前此日子在研究如何提高lucene搜尋速度,200多w的索引資料搜尋結果有50w時大概花了10s左右,雖然已經對搜尋結果進行cache,但第一次查詢還是很慢的。主要是由於業務上要根據條件過濾掉一些記錄,還有是對搜尋結果做分組統計。所以在filter中實現的話最要迴圈50w次來對每條記錄判斷並做過濾。最開始的時候以為是對搜尋結果的分組統計的效能問題。最後經測試發現還是迭代hits的效率低下。找了很多文件都沒有很好的解決方案。只找到了使用hitcollector來做搜尋結果的分組統計的高效。最後決定把它拿到filter中替代了之前的迭代hits結果的操作。最後發現50w結果只要2s左右效率提高了好幾陪。以下為大致實現方式:

private query query;

public bitset bits(indexreader reader) throws ioexception

}catch (ioexception e)

}});

return bits;

}順便提醒大家不要對hits做迭代操作。文件上說的很清楚不要迭代超100條以上的hits因為預設只查了前100條資料。當超過100時它得再次去索引查詢這樣增加了頻繁的i/o操作。但使用hitcollector為什麼高效現在還不清楚內部實現原理。

提高對C 的認識

c 中有很多 東西 c,過載,物件導向,模板,例外,名字空間。這麼多東西,有時讓人感到不知所措。怎麼弄懂所有這些東西呢?c 之所以發展到現在這個樣子,在於它有自己的設計目標。理解了這些設計目標,就不難弄懂所有這些東西了。c 最首要的目標在於 和c的相容性。很多很多c還存在,很多很多c程式設計師還存在...

提高對產品的追求

目前到了乙個比較考驗的階段,以前所做的所有事情都是在自己的能力範圍之內,這次主導的ue改進,自己也不是乙個專家。但是,這種情況,肯定會在以後的階段都經常的遇到。所以,自己必須處理好這個專案,也是為了以後積累更多的經驗。所以,自己必須在專案監督和管理上下好功夫。並且,有一點很重要,管理者的意志將會直接...

對DOM操作效率的提高

本文部分內容,引用自 想要知道如何提高效率,那麼首先我們需要知道,關於dom的操作,哪乙個最影響整體的效率,也就是說,哪一處所占用的時間較大,首先,我們介紹一下,html頁面顯示在瀏覽器中,都要經過哪些流程。其中,第三步,對render tree的各個結點計算布局資訊為時間占用較大的一部分,而在這一...