使用搜索API使用分页器从查看结果中删除重复记录

问题描述 投票:0回答:1

我的项目是在Drupal 7中设置的,我正在使用搜索API来显示我的自定义搜索结果。实际上,我想显示基于两种内容类型内容的搜索结果,因此我已经为这些内容类型配置了搜索api,然后选择了要搜索的字段,然后为内容建立索引。

为了显示搜索结果,我正在使用索引节点类型的drupal视图。但是问题是,在我的搜索结果中,由于某些内容具有相同的标题却具有不同的正文,所以我得到的结果重复。

我要删除标题重复的搜索结果。 (由我自己创建的自定义字段)

我已经尝试通过View挂钩尝试一些自定义解决方案,但无法正常运行,这给了寻呼机问题

function custom_views_pre_render(&$view) {
    if ($view->name == 'search_books') {
        $view_ISBN = array();
        foreach ($view->result AS $key => $res_view) {
            $ISBN = $res_view->entity->field_isbn[und][0]['value'];
            if (!in_array($ISBN,$view_ISBN)) {
                $view_ISBN[] = $ISBN;
                unset($view->result[$key]);
            }
        }

        $view->query->pager->total_items = count($view->result);
        $view->query->pager->update_page_info();
    } 
}

这将删除重复的结果,但它给出错误的寻呼机结果。

我也尝试过查询alter hook,但是它对我不起作用。

function custom_query_alter($ query){

if (isset($query->alterMetaData)) {
    if (isset($query->alterMetaData['view'])) {
        if($query->alterMetaData['view']->name == 'search_books') {
            $fields =& $query->getGroupBy();
                // Tried various fields to check which was the field creating the problem.

                $query->groupBy('field_isbn');
                $query->distinct = TRUE;
        }
    }
}
}

我也尝试安装“ views_distinct”模块,并从视图中区分出该字段,但这也给我传呼机的问题。

任何想法如何解决此问题?

php drupal-7 drupal-views drupal-search
1个回答
0
投票

您可以使用分组字段来从视图格式使用分组字段,也可以使用Use aggregation区域中的Advanced

© www.soinside.com 2019 - 2024. All rights reserved.