2009-07-01 5 views
0

DP 6検索APIを調べて、検索キーを変更して検索を実行して検索を実行する前に、フックが表示されませんでした。 ユーザが入力した文字列に対してキーワード展開を行いたい。たとえば、ユーザーが 'foo'と入力した場合、 'foo'と 'bar'の検索を実行します。最終的にはこれらのマッピングのUIが必要ですが、素早いプロトタイプのためには文字列をハードコードすることができます。Drupal Search Behavior

ここで、これを行うコードを作成しますか?私は検索APIのフックを欠場しましたか?


UPDATE:
Synonymsモジュールは、分類条件のためにこれを行います。私はフルテキスト検索のためにこれを行う必要があるかもしれません。助言がありますか?

答えて

2

この場合に使用するフックはhook_search_preprocessです。検索が完了する前にユーザーが入力したキーを編集することができます。有益には、これはテキストの索引付けを行うため、索引付けされているテキストについてもそれらの単語に展開されるという利点があります。

+0

クール、ありがとう。これが検索APIリファレンスに組み込まれていれば役に立ちませんか? http://api.drupal.org/api/group/search/6 – cdonner

+0

非常に役に立ちます。 DrupalのSearch APIリファレンスとSearchの状態は多少悲惨であり、確かに貢献が評価される領域になります。例えば、文書化されていない検索フックさえあります。 – codeincarnate

0

私はこれを試していませんが、ドキュメントを読んだら、hook__search()をモジュールに実装して、そこにkeword展開を行い、展開されたキーでdo__search()を実行してください。

見た目では、hook__update__index()も行う必要があります。

+0

これは私にとって完全に決定的なことではありません。私は、Drupalがそれ自身のすべてのモジュールに対してdo__search()を呼び出すと仮定します。したがって、私は2回検索しませんか?プログラムで追加したいキーに対してのみdo_searchを呼び出すことができます。 ORとなるので、結果セットをマージできます。これは依然として単純な問題の複雑な解決策になります。私がむしろ必要とするのはdo_search()メソッドを 'オーバーライド'することですが、どうすればよいのか分かりません。 – cdonner

+0

はい、フック検索の前処理のために十分なドキュメントを読み込めませんでした。インデックス作成のためだと思いました。 –