2009-06-15 11 views
2

誰かがApacheのsolr検索の検索結果をカスタマイズする方法を教えてください。これらの変数にアクセスすることしかできませんでした。[comment_count] => [作成済み] => [ID] => [名前] => [タイトル] => [型] => [uid] => [[ url] => [score] => [body]です。私は状況、投票のような他の変数にアクセスする方法をapacheolrの検索結果をカスタマイズする方法(drupal 6)

....インデックスから(私はこれらの値を取得するためのデータベースにアクセスしたくない、私はインデックス自体からそれを取得したい)

は、私が理解する必要が

結果スニペットでその特定のノードの投票のないを表示する必要がない 1.どのように結果のインデックス票をフィールド投票を表示する方法 2、状態 ...へスニペット。

+1

あなたが必要とするすべてのフィールドをリクエストする必要があります。デフォルトでは、これらのフィールドは d、nid、title、comment_count、タイプ、作成、変更、スコア、パス、URL、 、名前 function formexample_apachesolr_modify_query(&$ query、&$ params){ $ params ['fl']。= '、field_desc'; $ params ['fl']。= '、field_url'; } – pmarreddy

答えて

2

投票は理由のカップルのためのインデックス作成には適していません:

  • 投票はすぐに
  • 投票が行われた場合、ノードが更新されません変更することができます。そのため、apacheolrは変更を取得するためにノードを再索引付けすることを知りません。

「ステータス」によってノード - >ステータス値を意味する場合、答えは常に1になります。未公開のノードは決してインデックスされません。各ノードがインデックス付けされている、とあなたがに値を取得するために$ノードから$文書にフィールドを追加することができ、このフックが呼び出されます - あなたは、インデックスに何か他のを追加したい場合は今、あなたはhook_apachesolr_update_index(&$document, $node)をしたい

solrインデックスただし、あらかじめ定義されたフィールド接頭辞を使用する場合は、schema.xmlを参照してリストを検索します。

+0

+1は、定義済みのフィールドプレフィックスに言及しています。 – labue

+0

偉大な答えですが、検索結果の値も取得できる部分がありません。 – Damien

1

別のオプションは、あなたのtemplate.phpファイルに以下の前処理を作成し、入力引数NIDでお好みのビュー(複数可)を作成することです:とビュー名「MYVIEW」をマッチング

function MYTHEME_preprocess_search_result(&$vars) { 

$vars['myView'] = views_embed_view('myView', 'default', $vars['result']['node']->nid); 

} 

変数名は私にとって意味があります。次に、search-results.tpl.phpファイルで変数$ myViewを使用できます。

2

以下は、並べ替えや出力のためのフィールドを追加するコードの例です。

/** 
* Implementation of hook_apachesolr_update_index() 
* Here we're adding custom fields to index, so that they available for sorting. To make this work, it's required to re-index content. 
*/ 
function somemodule_apachesolr_update_index(&$document, $node) { 
    if ($node->type == 'product') { 
    $document->addField('sm_default_qty', $node->default_qty); 
    $document->addField('sm_sell_price', $node->sell_price); 
    $document->addField('sm_model', $node->model); 
    foreach ($node->field_images AS $image) { 
     //$imagecached_filepath = imagecache_create_path('product', $image['filepath']); 
     $document->addField('sm_field_images', $image['filepath']); 
    } 
    } 
} 

/** 
* Implementation of hook_apachesolr_modify_query() 
* Here we point what additional fields we need to get from solr 
*/ 
function somemodule_apachesolr_modify_query(&$query, &$params, $caller) { 
    $params['fl'] .= ',sm_default_qty,sm_field_images,sm_sell_price,sm_model'; 
} 

あなたが完全に出力をカスタマイズしたい場合は、以下の操作を行う必要があります 1)コピー検索results.tpl.phpをし、あなたのテーマのフォルダに/モジュール/検索から-result.tpl.phpを検索します。検索-result.tpl.php 3内で必要と 2)テーマ

または約述べたように、あなたが使用して上書きすることができます/構築/管理者を訪問し、テーマレジストリをクリアすることを忘れないでください)$結果オブジェクトを使用しますプリプロセッサフ​​ック。

よろしく、スラバ

0

ここではどのようなノードとフィールドがインデックス化され、そしてどのようなSolrには、検索結果として吐き出しをカスタマイズする方法の概要とSolrの検索の統合モジュールのメーカーによって映像です...Drupalの6のために

http://sf2010.drupal.org/conference/sessions/apache-solr-search-mastery.html

そしてDrupalの7: http://www.acquia.com/resources/acquia-tv/conference/apache-solr-search-mastery

それはすべての非常にカスタマイズ可能になります!

関連する問題