最近

最近心境有些變化,不過這部份不適合在這講XD,要說的是關於這裡的事,目前有兩個計畫,一比較單純,就是這裡的樣式想改版,還想對應mobile device,雖然問題是有多少人會用行動裝置來看我的部落格~_~,目前有兩個主要方向:黑底白字、減少頁面資訊。

另外一個就是 gugod 前陣子叫我推廣大家多用 CSS3,所以想寫一系列文章,一篇文章介紹一個 CSS3 的特色,包括還沒瀏覽器支援的,所以最近兩週都花了些時間在看 CSS3 Spec,不過越看越覺得自己認識實在還很少,而且另外還有一些東西我覺得可以介紹的,其實是 CSS2 的東西,但是因為 IE 過去一直不支援所以很少人用,這部份該不該放一起我還蠻猶豫的。

可惜我這週有工作要忙,所以至少要下週才會開始有東西出來吧(其實有壓力時才會想寫啊XD)。


Safari 的 re 支援

過年前犯的錯誤,就是用到太新的 Regular Expression:

(?!pattern)

結果 Safari 就出錯了,然後某站新年期間用 Safari 都可能出現錯誤,我還一度以為是 jQuery 1.31 還有 bug,結果看來是我的問題~_~。


日文全文搜尋

這篇要講的是很基本的東西,不過我是最近有需要才搞清楚的,雖然標題是日文,不過其實中文也是一樣的狀況。

MySQL資料庫內的全文索引還只支援用空白斷詞,不過這種方法在中文、日文的語言結構下完全無法產生作用,而且事實上也很難讓程式能根據語意正確的斷詞,像是有名的句子:「すもももももももものうち」,程式語言很難判斷該在哪斷出すもも、もも兩個主詞,因此有了 N-Grams 斷詞的演算法,使用 N-Grams 來對上面的例句做處理,會變成:「す すも もも もも もも もも もも もも もも もの のう うち ち」。

轉成這樣的詞句來讓資料庫系統做索引,要搜尋時也先把關鍵字做 N-Grams 斷詞,分成多個關鍵字,這樣按照分數來排就可以得到還不錯的搜尋結果了,不過有兩個問題,首先是可能會因為斷詞方式而有不正確的搜尋結果,這問題目前只能加長斷詞的長度,例如把兩個字的長度改為三個字的長度。另一個問題是 MySQL 其實要到 5.1 才支援,5.0還沒有,所以一直以來要做全文搜尋,都是把目標欄位做 N-Grams 斷詞,存到另一個欄位裡面,然後對該欄位做全文索引(Fulltext Index),另外還要在 my.cnf 的 mysqld 區塊內加上:

ft_min_word_len=1

這樣 MySQL 做全文索引時,才會把字串長度在 1 以上的詞都納入範圍,如此一般就可以用 MATCH, AGAINST 的語法來進行全文檢索了,這裡 MySQL 還會自動的忽略大小寫、平假名片假名,用 LIKE 時要忽略平假名片假名可是很辛苦的~_~。


更之前的文章