キーワード検索クエリ
Mediawikiに続いてこちらも作ってみた。
WordPressはDDLがシンプル。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不要かも。