SugarCRM - グローバル検索で有効にならないモジュールがあるけど?

#php, #sugarcrm

SugarCRMネタ。

管理 > グローバル検索からグローバル検索を有効化するモジュールを選択することが
できるが、そもそもこのリストに出てきていないモジュールがある!

このあたりが結構厄介だが、グローバル検索可能モジュールをどのように判定しているかまとめてみた。

グローバル検索有効・無効配列はダミー

管理画面からいじると、どのモジュールを有効、無効にするか配列が生成されるけど、これはダミー。ここに定義したからといって有効になるわけではない。

vardefsがポイント

実際のところは、vardefsのフィールド定義のunified_searchプロパティで判断している。
このunified_searchtrueのフィールドが1つでもあると、そのモジュールはグローバル検索可能モジュールとしてリストされるようになる。

なので、作ったモジュールがリストされないなぁと思ったらフィールド定義のunified_searchtrueにするだけでよい。

グローバル検索有効化までの手順

  1. 有効化したいモジュールのvardefsのunified_searchtrueになっていることを確認する。
    なってないなかったらtrueに設定する。ここがtrueになっていなかったら全く無効。
  2. グローバル検索対象としたいフィールド定義のunified_searchtrueにする。
  3. リペア
  4. グローバル検索対象モジュールのリストはキャッシュされているので、cache/modules/unified_search_modules.phpを削除する。
  5. 管理 > グローバル検索でリストされているのを確認!
  6. あとは煮るなり焼くなり

全文検索エンジンがないと、グローバル検索は各モジュールを部分一致で検索するようになっている。多分。パフォーマンスに直結するため、どのフィールドを対象にするかというのをユーザーにはスタジオから手軽に設定できないようになっているのがキモ。


searchFieldsもポイント(追記)

unified_search => trueにしたからOKと思ったら、SearchFieldsに定義されているものしかグローバル検索対象にならない。注意されたし。