Bigram Full-Text Search rev.18


3 Comments
Bigram Full-Text Search Options

此版內容已正式包含進 0.21 ,請更新。


WordPress Plugin: Bigram Full-Text Search


13 Comments

簡介

這是一個給 WordPress 使用的搜尋外掛。

  1. 使用 MySQL 的 Full-Text Search 功能,取代 WordPress 內建的搜尋功能。
    Full-Text Search 的好處不僅是能計算出文章關聯性,尋找出更準確的結果,速度也比 Like Search 快上數~數十倍。
  2. 以 N-gram 方式實作斷詞,這樣才能讓中日韓文順利使用 MySQL Full-Text Search 。

Introduction

This is an advanced search plug-in for WordPress. Only good for Chinese, Japanese and Korean. Other language users please try Advanced Search or similar plug-ins instead.

  1. Using MySQL full-text features to provide faster performance and a more relevant search result.
  2. Using N-gram-based word segmentation to support CJK glyphs in MySQL full-text.

下載 / Download

實作

採用 N-gram 方式解決雙位元字斷詞問題,這個方式需要新建一張 wp_posts_ngram 表格,儲存僅供搜尋用的關鍵字,例如「MySQL 全文搜尋」這段文字的搜尋關鍵字為「MySQL 全文 文搜 搜尋」,因此這張表格大約需佔 wp_posts 表格的 2–4 倍空間。反正現在硬碟愈來愈便宜,用空間換時間很划算 :p

搜尋時也是依照 N-gram 切割,所以搜尋子句大概長得像這樣: MATCH (post_content_ngram) AGAINST ('+MySQL +全文 +文搜 +搜尋') 。但是 MySQL Full-Text Search 有最短關鍵字限制,預設為4個字以上,所以前面的搜尋子句會被轉換為 MATCH (post_content_ngram) AGAINST ('+MySQL') 。而為了解決這個問題, N-gram 表格中的內容會經過 UTF-8 (Hex) 編碼,「MySQL 全文 文搜 搜尋」會被轉換為「MySQL E585A8E69687 E69687E6909C E6909CE5B08B」,搜尋時也是使用轉換過的 N-gram —— MATCH (post_content_ngram) AGAINST ('+MySQL +E585A8E69687 +E69687E6909C +E6909CE5B08B') ,經過如此處理,雙位元字的全文搜尋就沒問題了。

附註

  • 第一次啟用時會進行安裝,包含建立 wp_posts_ngramwp_comments_ngram 表格及製作目前所有文章的 N-gram ,因此需要一點時間。
  • 我使用了 LOW PRIORITY DELAYED INSERT ,因此 N-gram 可能不會與文章同步更新,而會等到資料庫不忙時才更新。

參考資料

版本紀錄

v0.2.2

  • New: 設定不於迴響中搜尋時,則不更新 wp_comments_ngram 表格
  • New: 支援部份 boolean full-text search operators (說明),同時也為此改變了權重計算方式
  • New: 移除使用者設定的停字
  • Fix: 不轉換歐文字元,這樣才能不區分大小寫搜尋
  • Fix: v0.2.1 中最大的 bug ——迴響的 N-gram 根本就不會產生
  • Fix: 修正 Related Entries 功能中可能發生的問題:文章標題中有 HTML Tags 的話…
  • Fix: 修復一些可能出現的 Notice 和 Warning

v0.2.1

  • New: 新增選項頁面
  • New: 搜尋範圍可包含迴響
  • Fix: 不刪除重複的 N-gram 字詞
  • Fix: 改用 DELAYED INSERT

v0.1

  • 初次釋出

WordPress supports tagging natively!


2 Comments

在剛才的一個更新中, WordPress 終於有了自己的 Tagging 系統,以後不用再裝 Ultimate Tag Warrior 了。

前陣子玩 Habari 時,其中一個吸引我的功能就是他完全採用 tagging ,沒有 category ,我目前相當喜歡這種分類方式,所以現在最新的設計 —— “Unfair” —— 中,只在 Live Archives 中看得到 category 。

我先開始寫的是 Habari 版本的 “Unfair” , Habari 版本的 “Unfair” 已經寫得接近完成,但是畢竟 Habari 是一個開發中的系統,模板相關 function 尚未完整,在我硬幹出判斷首頁、內頁、彙整頁的方法後, Habari 才又加上這項功能,因此我想雖然 Habari 這麼好玩,還是得等完整一點時才轉移比較好,於是才把 “Unfair” 改成 WordPress 版本。

現在 WordPress 內建了 tagging 功能… 我想轉移 Habari 的誘因又少一件了… XD

Update: 我發現這跟 UTW 的 Tag Archive 有衝突,所以先 downgrade 回 revision 5109。(我猜應該只是變數名稱相同,不過反正不急,我想等作者自己來修 :p)

Update 2: WordPress 官方出了 UTW Importer ,有點驚訝 XD


K2 moved to Google Code


0 Comments

這篇文筆流暢的公告所言,因為 Google Code 提供了一套完整的版本管理系統、臭蟲追蹤系統(專案管理系統?),甚至還有討論群組(不過 K2 的討論區應該不會轉移過去),因此 K2 決定將原本分散的 SVN 和 Mantis 轉移到 Google Code 上。 SVN 的修訂號又要從 1 開始計算,這算是小問題,而 Mantis 上的資料就得手動轉移了。使用了 Google Code 後,新的 Bug Tracker 只需有 Google 的帳號即可參與回報錯誤或提供建議,感覺更為方便了。此外看了一下 Google Code ,覺得功能還真是完整,難怪這次沒有 Beta XD

專案名稱叫做 kaytwo ,之前還申請過 k2-for-wordpress ,我覺得 ktwo 比較好耶~ :p


WordPress.com Tags


0 Comments

ephemeris « WordPress.com

我在 WordPress.com 開了一個隱藏 blog ,設定為不公開(I would not like my blog to appear in search engines like Google and Technorati, and in public listings around WordPress.com.),而裡面有個文章分類叫做 ephemeris ,是個不太可能跟別人重複的奇怪文字,我雖然寫了兩頁的數量,但又禁止 WordPress.com 顯示出來,於是就出現上面有趣的畫面了。不過我還是覺得這算是 bug 吧… 為什麼不顯示出來的文章也要列入頁數計算… 讓人看得到吃不到,好滿足內心的優越感嗎? XD


Scrobbler 2.0.4 cURL version


0 Comments

今天很閒,於是更新了站上的 Plugins ,在這段期間 Scrobbler 竟然已經從 1.3 更新為 2.0.4 了,真是版本大躍進。不過由於他使用的還是 fopen 指令, DreamHost 不支援,因此我再 Fix 了一次,這次依照 GPL 放出來。

下載 Scrobbler 2.0.4 cURL version


K2 r303


1 Comment

透過 K2 SVN 更新了一下本站的模板,目前是 Revision 303 ,比較明顯的更新有上方的 Rolling Archives ,這跟 Windows Live Search 一樣好玩 >_<b 。還有最下方的 Style Info ,不過這功能都沒有什麼介紹… 讓我稍微研究了一下。除了要在你的 CSS 裡面加上他所說的註解外,還要在 K2 Scheme 中的文字欄位輸入你希望的顯示格式,我是如下輸入,僅供參考:

K2 Style: <a href="%stylelink%" title="%comments%">%style%</a> v%version% | 

忘記提一點,新版 Archives 頁面我覺得更好看了。

Update: 看了一下 SVN ,才知道 Live Search 的顯示方式也大幅改變了,現在的 Live Search 結果會直接顯示在左邊,但目前與 Rolling Archives 的整合有點問題。

從 WordPress 2.0 開始, WordPress 似乎正在朝向愈來愈絢麗的方向前進,最近連 Widget 都有了(其實前陣子就已經在 WordPress.com 玩過), K2 的成長也很令人驚訝… 兩者互相影響的未來,應該會更加有趣吧!