問題:Search APIを使用してプログラムで独自の検索を実行する必要があります。私が見つけたすべてのGoogleの結果は、開発者以外の人に、Viewsでモジュールを使用する方法を教えることを目的としています。
情報:
- Solrまたはその他の代わりにローカルデータベースサービスを使用します。
- 他の結果と一緒に表示されるデータをデータベースに保存しないでください。
- コンテンツは「タイプ」タブにグループ化されます。
- さまざまな理由でビューを使用しない。
- Facets APIを有効にしますが、使用方法もわかりません。
理由:検索ページを/ site-searchに配置し、ページ引数の後に/ node / keywordを使用しないようにするためです。また、同じタイプの機能を提供する他のモジュールの範囲を超えてこれをカスタマイズするよう求められます。そして、私はこれを行う方法を学びたいが、それを達成する方法に関するチュートリアルやその他の洞察を見つけていない。
残り:検索ページを作成し、そのページで次のコマンドで検索を実行しています:
$term = $_SESSION['my-search']['term'];
$server = search_api_server_load('database');
$index = search_api_index_load('default_node_index');
$query = new SearchApiQuery($index);
$query->keys($term);
$query->fields(array('title','body:value'));
$srv= new SearchApiDbService($server);
$result = $srv->search($query);
セッション変数は、検索フォームが送信されると設定され、ユーザーを/ site-searchにリダイレクトして検索を実行し、結果を表示します。
$ resultを出力すると、ノードIDとそのスコアの配列である結果セットを含むさまざまな情報を持つ配列であることがわかります。
それらを実行して、ノードを取得して結果を自分で表示することもできますが、検索結果をレンダリングする他の方法が必要だと思います。私はそれを見つけていませんが、それが問題です。
Search APIとFacet APIのさまざまなクラスを調べてきましたが、結果出力を構築するようなものは見つかりませんでした。
これに関する助けをいただければ幸いです。
結果の例:
Array
(
[result count] => 11
[results] => Array
(
[37] => Array
(
[id] => 37
[score] => 15.7503318786621
)
[39] => Array
(
[id] => 39
[score] => 7
)
[40] => Array
(
[id] => 40
[score] => 5
)
[31] => Array
(
[id] => 31
[score] => 4
)
[33] => Array
(
[id] => 33
[score] => 1
)
[36] => Array
(
[id] => 36
[score] => 1
)
[1] => Array
(
[id] => 1
[score] => 1
)
[15] => Array
(
[id] => 15
[score] => 1
)
[16] => Array
(
[id] => 16
[score] => 1
)
[27] => Array
(
[id] => 27
[score] => 1
)
[35] => Array
(
[id] => 35
[score] => 0.980873763561249
)
)
[warnings] => Array
(
)
[ignored] => Array
(
)
[performance] => Array
(
[complete] => 0.0033111572265625
[preprocessing] => 0.00053095817565918
[execution] => 0.0027379989624023
[postprocessing] => 4.2200088500977E-5
)
)