有人可以帮我如何自定义apache solr搜索的搜索结果。我只能访问这些变量 [comment_count] => [created] => [id] => [name] => [nid] => [title] => [type] => [uid] => [url] => [得分] => [正文]
如何从索引中访问其他变量,如 status,vote .... (我不想访问数据库以检索这些值,我想从索引中获取它本身)
我需要在结果摘录
中显示该特定节点的选票我需要了解 1.如何索引投票领域 2.如何在结果摘录中显示投票,状态 ....
答案 0 :(得分:2)
由于以下几个原因,投票是一个糟糕的索引选择:
如果'status'表示node-> status值,则答案是它始终为1.未发布的节点从不编入索引。
现在,如果你想在索引中添加一些 else ,你需要hook_apachesolr_update_index(&$document, $node)
- 在每个节点被编入索引时调用这个钩子,你可以在$ document中添加字段从$ node获取值到solr索引。但是,您希望使用预定义的字段前缀 - 查看schema.xml以查找列表。
答案 1 :(得分: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)将search-results.tpl.php和search-result.tpl.php从/ modules / search复制到主题文件夹。 2)在search-result.tpl.php中根据需要使用$ result对象 3)不要忘记通过访问admin / build / themes
来清除主题注册表或者如上所述,您可以使用预处理程序挂钩覆盖。
问候,斯拉瓦
答案 2 :(得分:1)
另一种选择是使用输入参数nid创建您喜欢的视图,然后在template.php文件中创建以下预处理:
function MYTHEME_preprocess_search_result(&$vars) {
$vars['myView'] = views_embed_view('myView', 'default', $vars['result']['node']->nid);
}
将视图名称'myView'与变量名匹配对我来说很有意义。然后,您可以在search-results.tpl.php文件中使用变量$ myView。
答案 3 :(得分: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
这看起来非常可定制!