我的项目是在 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();
}
}
这会删除重复的结果,但会给出错误的寻呼机结果。
我也尝试过 Query alter hook 但它对我不起作用。
功能 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”模块并将字段与视图区分开来,但它也给了我寻呼机问题。
任何想法如何解决这个问题?