キーワード検索クエリ

Mediawikiに続いてこちらも作ってみた。

WordPressDDLがシンプル。postsテーブルのみ。JOIN無しでいけます。

SELECT 
MATCH(post_title,post_content) AGAINST('*W1:5,2:1*D+ 富士山' IN BOOLEAN MODE) AS score, post_title, 
KWIC(concat(post_title, ' ', post_content), 180, 3, 1, '', '... ', '富士山', '<b>', '</b>')
AS snippet , guid FROM posts WHERE MATCH(post_title,post_content) 
AGAINST('*W1:5,2:1*D+ 富士山' IN BOOLEAN MODE)
ORDER BY score DESC LIMIT 200;

MovableTypeはJOINが必要だった。mt_fileinfoテーブルとmt_entryテーブルから。

SELECT
MATCH(entry_title,entry_text,entry_text_more) AGAINST('*W1:5,2:1*D+ 富士山'IN BOOLEAN MODE) AS score, entry_title,
KWIC(concat(entry_title, ' ', entry_text, ' ', entry_text_more), 180, 3, 1, '', '... ', '富士山','<b>', '</b>')
AS snippet,fileinfo_url FROM mt_fileinfo, mt_entry WHERE fileinfo_entry_id = entry_id AND MATCH(entry_title,entry_text,entry_text_more) AGAINST('*W1:5,2:1,3:1*D+ 富士山' IN BOOLEAN MODE)
ORDER BY score DESC LIMIT 200;

前回のMediawiki用のSQLもそうですが、SQLクエリの意図は検索して対象ページのURLとKWIC表示を作るというものです。単にヒットする文書を表示するだけならJOIN不要かも。