提到關鍵字搜索,首先聯想到的無非就是使用一些indexOf,replace之類的字符函數,最多加上一些正則表達式而已.實現起來雖然很簡單,但是這背后的效率問題可曾仔細考慮過?例如論壇中的關鍵字過濾,一般情況下需過濾的關鍵字數量及檢測的文本長度都不大,所以這一瞬間的過程沒有太多值得關注的地方。但若關鍵字數量不在是屈指可數,而是有成千上萬, 并且待檢測的文本也是一長篇大論,結果可不再是那么樂觀了。大家都知道,每多一個關鍵字,就要增加一次全文的檢索,最終花費的時間將遠遠超出可接受的范圍內。
既然考慮的是那種極端的關鍵字搜索,通常的逐個遍歷搜索顯然是行不通的。如今用的是JavaScript,若不使用Hash表實在是太對不起這門語言了。有著對表特天獨厚的支持,不妨就拿出少量的空間來換取大量的時間吧。
先看個例子,比如有如下的關鍵字: foo1,foo2,bar1,bar2,既然要用空間換時間,因此搜索之前先將他們預處理。前面提到了JS靈活又高效的表,顯而易見,使用樹的結構是最有優勢的。即使不明白,也沒關系,最終實現結構正如如下的代碼,熟悉JSON同樣很親切:
復制代碼 代碼如下:
var Root =
{
f:
{
o:
{
o:
{
: true,
: true
}
}
},
b:
{
a:
{
r:
{
: true,
: true
}
}
}
};
新聞熱點
疑難解答
圖片精選