検索は男のロマン!?

| コメント(2) | トラックバック(0)

相変わらず素早いお仕事? きれいなコード、エレガントな設計、頭が下がります。

ちょっとだけ釣られてみる*。↓この一節にのみ、ですけど :-)

まあなんですか?「文書ドラフト」形式でエントリ別アーカイブを静的生成するとかダルいでしょ?

* もう、釣られると言うか、キャラ定着しつつあるなぁ。イメチェンしなきゃ!

ちょ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に静的生成のブログだとデータが入らないことが関係しているようです。

トラックバック(0)

トラックバックURL: http://junnama.alfasado.net/cgi/mt/mt-tb.cgi/166

コメント(2)

その後junnamaさんが深みにはまってらっしゃることはさておき(笑)、1月頃の記事があり、多分それを受けてyosshiさんが、
http://www.greenplastic.net/2007/02/04_0630.php
の記事を書き、そのあたりを受けて
http://mook.jpn.org/archives/2007/02/hyper_estraier_3.html
みたいなad hocなインデックス更新方法が提案されたりしています。この調子でこれらが無批判に拡大再生産されてしまうのは良くないよなあ、と思うわけです。特に「@mdateを与えているのに-sdオプションを指定すると何が起こるのか」を心配しない人たちによってそれがなされることは、ね。

そういうわけで、有効と思われる対案の一つを出しておこうかということなのです。APIを使ってMTデータベースとHyper Estraierデータベースの同期を実現した例は見かけてないなと思ったので。

>「@mdateを与えているのに-sdオプションを指定すると何が起こるのか」

なるほど元記事では -sd付けてますね。delマーク付けておきました。細かなところまでチェックいただき恐縮です m(_ _)m

話は違いますけど(違わないと思うけど)、Hyper Estraierは入るけどPerlバインディングがうまく入らない環境が時々あって、MTプラグインから標準入力経由でEstcmdに渡すみたいのも書いたりしてて、現場で書いた「ad hoc」なものが結構あるのは自覚してます。これからは「ad hoc」タグ付けるようにしますね(爆)。

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2007年10月 7日 02:05に書いたブログ記事です。

ひとつ前のブログ記事は「もしかしてMovable Type?」です。

次のブログ記事は「mixiは自分たちのサービスを「公共のインフラ」であると言い切るくらいの信念を持ってサービスの向上に努めればいいんじゃないかな?」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6