キーワード検索を「あいまい」化

3月 15th, 2012 2 comments

● 前オキ

文字列の集合から、特定の文字を検索する際のカユイ点は、文字の厳格性の問題じゃないでしょうか。つまり、「半角(w)・全角(w)」「大文字(A)・小文字(a)」「ひらがな(あ)・カタカナ(ア)」ってのが、普通は別の文字である・・・って、コトです。だから、データには「HANZ」があっても、検索キーワードが「hanz」では、ヒットしてくれない。

これ、何年か前にお得意先の蔵書の管理システムを移植再構築している際に、カユサを感じて対応策を調べていたのです。で、RDBS での関数で強引に差違を吸収してしまうというアイデアを発見し、イタク感激したものです。現在改めて調査したところ、postgresql で文字コードがUTF-8 であればナニヤラおいしいことが出来そうなトピックスがあったのですが、上手く動作しないので、結局上記のテクニックを当初の「英数字のみ」の処理から、「ひらがな・カタカナ」にも対応出きるように、50音を声に出しながら追加したので、忘れないように記録しておきます。

● 具体的な作業

—– postgresql の関数として —– 例えばconv.sqlというファイル名で、以下を作成。

CREATE OR REPLACE FUNCTION conv(text) RETURNS text AS $$
SELECT translate(upper($1)
,’abcdefghijklmnopqrstuvwxyzあいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽゃゅょ-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ‘
,’ABCDEFGHIJKLMNOPQRSTUVWXYZアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポャュョ-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ’);
$$ LANGUAGE SQL IMMUTABLE;

———

で、psql 起動して、「\i conv.sql」 で、関数を作成。関数の存在を確認したければ「 \df」で、関数の中身を確認したければ「select prosrc from pg_proc where proname=’conv’;」で、見えます。

で、これを利用したい時の sql文は、こんな感じ。

select * from HogeHoge where conv(name) like conv(“キーワード”);

##########
あ!、この sql文 は、postgresql に依存しているじゃん!ってことはインターフェースから実装するDAOクラスにそのニュアンスを入れておいたほうがイイネ。

HogeHogeDaoByHibernateForPostgresql とかね。
##########

● 課題

斉藤・斎藤・齋藤・・・といった似たような呼称問題だけど、これは読み仮名などを利用すれば実装上で解決できるかな?(ちょいゴマカシ臭いケド)

といっても、結局「かな・漢字」問題は残るケドね。例えば「らーめん・拉麺」といった感じのパターンじゃ!こういったモノを全部やっつけられれば、google のようなカラクリが実装できるのでしょうが、そんなことに「力」(こだわり)を、かけ続けても本末転倒な「感」もあるので、ここら辺で勘弁してヤル。

風と土 4あわせプリン

2月 3rd, 2012 2 comments

娘にもらったプリンをお昼に食べたのですが、風と土 4あわせプリンというヤツ。

  1. 生っぽいクリーム
  2. プリン1
  3. プリン2
  4. カラメル

となっているソウである。

確かにスペシャル感があって、ウマイ。

じゃ、何が引っかかっているのか?>オレ

上から順番に食べるしかないのか?コレ?早くカラメル部分と絡めて食べたい。

で、フっと思いついた。コイツの横積層バージョンを作ったらドウヨ?・・・って、そんな面倒なことは誰しもヤリたくないでしょうケド。このパッケージじゃ、ひっくり返してお皿にも出せやしない。

わかるよ気持ちは。>パッケージデザイナーさん

でも、工業デザインつうか、こういった意匠って、そこまで考えるベキと思うのです。例えば運動着(!)を入れるスポーツバックってあるでしょ。高校の運動部が使っているようなアレ。縦長のデザインを買っちゃうと、出し入れが超困難!同じサイズでも横長であれば、お着替えサンも楽チンでしょ。そういうコトなんですよね、一番底にある「アリガタサ」って。

Categories: なんだかな Tags:

言葉の定義(覚書)

1月 1st, 2012 No comments

時間→間隔(例:1時間・30分間)

時刻→具体的な(例:1時30分・午後5時)

インターバル ポイント
年月日 日(day) 日付(date)
時間 時間 時刻