Home » vTigerCRM » 日本語の頭出しを実装する

日本語の頭出しを実装する

vTigerCRM6の頭出し機能は、アルファベットにしか対応していないので、名前がABC…など英字で始まるものでないと検索できません。
日本では当然、会社名や個人名がアルファベットで始まることのほうが少ないため、ほとんど機能していません。

これを「あいうえお」等で頭出しできるようにします。

alph

課題の整理

さて、一言に頭出し検索を日本語でと言っても、そう単純ではありません。

課題は2つあります。

まず、日本の企業、氏名はたいていひらがなやカタカナではなく、漢字が使われていること。
50音検索ができても、読みがなと結合しなければ、結局はアルファベット同様、機能しないです。

次に、日本語は音が多すぎること。
アルファベットの約2倍にあたる50音ですから、横一列では収まりそうにありません。

ひらがなを登録できるようにする

まず1つ目の課題から片付けていきましょう。

と言っても大したことではありません。
対象のテーブルに読み仮名カラムを作ります。
Accountsモジュールであればaccoutsテーブルに、Contactsモジュールであればcontactdetailsに、kanaなどのカラムを追加します。

画面からも参照更新できるように、vtiger_fieldへの追加も忘れずに。

ひらがなで検索できるようにする

次は、2つ目の多すぎる音の解決策です。

こちらは、全音ではなく、子音別に検索するようにしてみます。
「あ」「か」「さ」「た」「な」・・・という具合です。
これなら文字数が5分の1になるので、画面横幅に十分収まりそうです。

画面表記は、言語ファイルの”LBL_ALPHABETS”を編集することで変えることができます。

/languages/ja_jp/Vtiger.php

 

頭出し検索の実装

  準備が整いました。 それでは、検索処理を実装していきます。  検索はQueryGenerator.phpで行われています。 画面上の文字がクリックされると、 変数operatorに”s”、変数valueに「あ」「か」などクリックされた文字がセットされたリクエストが飛んできます。 なので、この変数operator=”s”を受け取っている場所が、where句の作成箇所です。 getWhereClause()という関数に、どうやら目的の処理が書けそうです。 /include/QueryGenerator/QueryGenerator.php

子音にぶら下がる母音すべてが検索対象となるようにします。
例えば、「か」がクリックされた場合は、「かきくけこ」のどれかを頭文字に持つレコードが検索されるようにするということです。

書き方はいろいろあると思いますが、上の例では、「あ」がクリックされた場合(valueに”あ”がセットされている場合)、「いうえお」もLike検索の対象とする、「か」の場合は「きくけこがぎぐげご」も対象とする・・・といった形で「わ」行まで書き連ねていく形です。

Like検索の対象となるカラムは、各モジュールで設定しています。
たとえばAccountsの場合だと、下記のようになります。

modules/Accounts/Accounts.php

読み仮名カラムが”kana”である場合

ここがちゃんと設定できていないと、せっかく作った読み仮名カラムが検索に使われませんので、忘れずに。

結果

これで日本語での頭出し検索ができるようになりました。

aiueo

Post Tag With :

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です