searchモジュールのフィルタについて

Events happening in the community are now at Drupal community events on www.drupal.org.
gg45's picture

いつもお世話になっております。

現在のサイト内検索は、Searchモジュールを利用しております。
ここで、例えば「コンテンツのあるフィールドにチェックが入っていたら検索対象外とする」
といったようなフィルタの機能を設けることは出来るのでしょうか。

ご存知の方いらっしゃいましたらお教えいただけるとありがたいです。
どうぞよろしくお願い致します。

Comments

こんにちは、gg45さん その機能はこのモジュールで実現で

jun784's picture

こんにちは、gg45さん

その機能はこのモジュールで実現できたはずです。(結構前に使ったので
ぜひ試してみてください!

facetedseaech
http://drupal.org/project/faceted_search

dokumori's picture

または、viewsでdrupalのサーチ機能を拡張して、お望みの機能を実現することも可能です。

もう少し質問させてください。

gg45's picture

jun784様
dokumori様

御回答ありがとうございます。

・facetedseaechモジュールについて
いろいろ試してみたのですが、利用方法がいまいちわかりませんでした・・・。
具体的なチュートリアルサイト等ございますでしょうか??

・viewsのサーチ機能
viewsのフィルタで、表示することによって検索機能は作成できたのですが、
一つの検索ボックスで全てのフィールドの検索をすることは出来るのでしょうか?
現在一つの特定フィールドの検索だけしかできず、
コアのSearchモジュールのように検索対象は全フィールドとしたいです。

たびたびお手数をおかけいたしますが、お時間ございます時にご連絡ください。
よろしくお願い致します。

search terms filter を expose

dokumori's picture

search terms filter を expose すれば、全フィールドを検索できますよ。

全フィールド検索できました。

gg45's picture

dokumori様

ご連絡頂いた方法で、全検索できました!
本当にありがとうございました。

最後に、searchモジュールと同様に、検索に引っかかった文言を含む数行を
検索結果に出したいのですが、こちらは対応できますでしょうか?

何度もお願いし申し訳ございませんが、
よろしくお願い致します。

dokumori's picture

できますが、以前僕が使った方法は、あまりキレイな方法ではないです。僕はbody と 1つの cck フィールドしかなかったので、以下の方法でとりあえず実装しました。

  1. search viewの設定で、検索結果に表示したいフィールドを全てFieldsセクションに追加、bodyをのぞいて全てのフィールドの 'exclude from display' にチェックを入れる
  2. bodyフィールドのテンプレートを作成する
  3. テンプレート内に以下のコードを追加(テンプレートの命名規則や内容は basic settings の theme: information をクリックすることで見つけられます。ここでは省略します)
  4. テンプレート内に以下のようなコードを持たせる

  //全てのフィールドの値を一つの変数にまとめる
  //フィールド名を知りたい場合、Devel モジュールをインストール後
  //このテンプレート内で dsm($row); と書くと一覧とそれぞれの値が見やすく表示されます
  $data = $row->node_revisions_body . $row->node_data_field_[field_name]_value;
  $keys = $_GET['keys'];

  // 関数 search_excerpt()を使うと、検索結果に含まれる検索キーワードをハイライトできます:
  // http://api.drupal.org/api/drupal/modules--search--search.module/function...
  $content = search_excerpt($keys, check_plain($data));
  print $content;

対応できました

gg45's picture

dokumori様

ご連絡ありがとうございます。
テンプレートの作成と、教えて頂いたコードの記載で対応ができました!
develモジュールとdsmの使い方も教えて頂きありがとうございます。
今まで知らなかったので非常に便利です。

何度も教えていただきありがとうございました。

dokumori's picture

どういたしまして。解決してよかったです。

develモジュールには、他にも色々な関数があるので、ソースコードをみてみることをお勧めします。例えばdvm()(var_dump() を krumo でフォーマットして表示する )という関数もあります。dsm()ではNULLが返されたときに何も表示されないので、こちらのほうが便利なこともあります。

また、http://drupal.org/project/devel_themer (説明:http://drupal.org/node/209561 ) を使うと、表示されているページに使えるテンプレート名の候補を見ることが出来たり、その他色々テーマ作成/変更時に便利な機能があります。ご参考まで。

search terms filter を expose

jun784's picture

search terms filter を expose すれば、全フィールドを検索できますよ。

すごい!
ViewsでIndex検索をできるとは知りませんでした!
ありがとうございますー。

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: