検索は男のロマン!?
公開日 : 2007-10-07 02:05:55
相変わらず素早いお仕事? きれいなコード、エレガントな設計、頭が下がります。
ちょっとだけ釣られてみる*。↓この一節にのみ、ですけど :-)
まあなんですか?「文書ドラフト」形式でエントリ別アーカイブを静的生成するとかダルいでしょ?
* もう、釣られると言うか、キャラ定着しつつあるなぁ。イメチェンしなきゃ!
ちょwwこれのこと!? このブログでは「文書ドラフト」形式のアーカイブテンプレートは登録しているけれど静的生成はしていない(昔はしてたけど今はプラグイン書いてる、ってかこの間書いた。公開してないけど案件とかでは使ってます)。
アーカイブマッピングの指定はせずに「登録するデータを組み立てるため」にテンプレートを使っています。
何故か? インデックスに登録したい内容が案件毎に違うから。titleとtextは検索したいけどtext_moreはしたくないとか、拡張フィールド(拡張テーブル)とかMT4だったらassetの内容とかを含めたいとかいう時に(今作成中のこいつもそうだし)、テンプレートの形だったらプログラムに手を入れないでテンプレ担当が対処できるでしょ? きわめて「お仕事」的な事情だけど、そのあたりは自由な方が現場的には使い回しがきくのです。
あとは、タイトルとか、text内でも見出しだったらhiddenの値として出現回数増やして突っ込んで重みづけするとか、タグはremoveするけど画像のalt属性値は活かすとか。
しつこいようだけど、まだ「検索」やってる。
ええっと、何だかいつも(o)さんに怒られてる気分ですが、まだ検索しつこくやってます。
今度は検索してMySQLのFULLTEXTインデックスを作成してMATCH ~ AGAINST で検索を試してみた(ちゃんと日本語通るのね)。
(searchlite_textってのにはmecabで分かち書きした検索対象テキストを入れてある。ええ...「文書ドラフトもどき」のテンプレート作って組み立ててますです)
SELECT *
FROM `mt_searchlite`
WHERE `searchlite_text` LIKE '%Movable Type%'
0.0124 秒(10回の平均値)
SELECT *
FROM `mt_searchlite`
WHERE MATCH (
`searchlite_text`
)
AGAINST (
'Movable Type'
)
0.0016 秒(10回の平均値)
エントリーは400件弱、速いっちゃぁ速いけどこの差にこだわるべきか悩んでいたところです。まぁ、検索が流行ってるようなので(<お前やろ!)、どうせなら作ってみようかと。スピードもあるけど、やっぱり全文検索はマッチングの順番とかが魅力だし(もちろんHyper EstraierでもNamazuでもそうなんですけど)。
メモ。
MAMPには my.confがないので、
/Applications/MAMP/db/mysql/my.conf
に置いたら怒られた。
/Applications/MAMP/Library/my.cnf
が正しいようです。
my.cnfに以下、記述しておかないと「MT」とかでかからない(デフォルト値は4)。
[mysqld]
set-variable=ft_min_word_len=2
あと、MT3では「ダイナミック」もしくは「ハイブリッド」にして一回再構築しないとMTEntryPermalinkが拾えないこともメモしておこう。ダイナミックパブリッシングのページで検索して、スタティックな別ブログのエントリーのタイトルとかはもちろん拾えるけれど、mt_fileinfoに静的生成のブログだとデータが入らないことが関係しているようです。