2

有人可以帮助我如何自定义 apache solr 搜索的搜索结果。我只能访问这些变量[comment_count] => [created] => [id] => [name] => [nid] => [title] => [type] => [uid] => [url ] => [分数] => [正文]

我如何从索引中访问其他变量,例如状态,投票....(我不想访问数据库来检索这些值,我想从索引本身中获取它)

我需要在结果片段中显示该特定节点的投票数

我需要了解 1. 如何索引投票字段 2. 如何在结果片段中显示投票、状态...。

4

4 回答 4

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 清除主题注册表

或者如前所述,您可以使用预处理器挂钩覆盖。

问候, 斯拉瓦

于 2011-06-15T09:17:14.497 回答
2

由于以下几个原因,投票是索引的糟糕选择:

  • 投票可以迅速改变
  • 进行投票时,节点不会更新。因此,apachesolr 不知道重新索引节点以获取更改。

如果“状态”是指节点->状态值,那么答案是它将始终为 1。未发布的节点永远不会被索引。

现在,如果你想在索引中添加其他东西,你想要hook_apachesolr_update_index(&$document, $node)- 这个钩子在每个节点被索引时被调用,你可以从 $node 向 $document 添加字段以将值放入 solr 索引。但是,您想使用预定义的字段前缀 - 查看 schema.xml 以找到列表。

于 2011-02-27T04:47:31.087 回答
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。

于 2011-04-27T20:23:31.323 回答
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

这一切看起来都非常可定制!

于 2012-05-04T12:53:18.997 回答