if (forge_get_config('use_fti')) {
$words = $this->getFTIwords();
$qpa = db_construct_qpa ($qpa,
- 'SELECT forum.msg_id, ts_headline(forum.subject, q) AS subject, forum.post_date, users.realname FROM forum, users, to_tsquery($1) AS q, forum_idx as fi WHERE forum.group_forum_id = $2 AND forum.posted_by = users.user_id AND fi.msg_id = forum.msg_id AND vectors @@ q ',
+ 'SELECT forum.msg_id, ts_headline(forum.subject, q) AS subject, forum.post_date, users.realname FROM forum, users, to_tsquery($1) AS q, forum_idx as fi, forum.subject||$2||forum.body as full_string_agg WHERE forum.group_forum_id = $3 AND forum.posted_by = users.user_id AND fi.msg_id = forum.msg_id AND vectors @@ q ',
array ($words,
+ ' //// ',
$this->forumId)) ;
$phraseOp = $this->getOperator();
if(count($this->phrases)) {
$qpa = db_construct_qpa ($qpa,
- 'AND ((') ;
- $qpa = $this->addMatchCondition($qpa, 'forum.body');
+ 'AND (') ;
+ $qpa = $this->addMatchCondition($qpa, 'full_string_agg');
$qpa = db_construct_qpa ($qpa,
- ') OR (') ;
- $qpa = $this->addMatchCondition($qpa, 'forum.subject');
- $qpa = db_construct_qpa ($qpa,
- ')) ') ;
+ ') ') ;
}
$qpa = db_construct_qpa ($qpa,
'ORDER BY ts_rank(vectors, q) DESC') ;
} else {
$qpa = db_construct_qpa ($qpa,
- 'SELECT forum.msg_id, forum.subject, forum.post_date, users.realname FROM forum,users WHERE users.user_id=forum.posted_by AND ((') ;
- $qpa = $this->addIlikeCondition ($qpa, 'forum.body') ;
- $qpa = db_construct_qpa ($qpa,
- ') OR (') ;
- $qpa = $this->addIlikeCondition ($qpa, 'forum.subject') ;
+ 'SELECT forum.msg_id, forum.subject, forum.post_date, users.realname, forum.subject||$1||forum.body as full_string_agg FROM forum,users WHERE users.user_id=forum.posted_by AND (',
+ array (' //// ')) ;
+ $qpa = $this->addIlikeCondition ($qpa, 'full_string_agg') ;
$qpa = db_construct_qpa ($qpa,
- ')) AND forum.group_forum_id=$1 GROUP BY msg_id, subject, post_date, realname',
+ ') AND forum.group_forum_id=$1 GROUP BY msg_id, subject, post_date, realname',
array ($this->forumId)) ;
}
return $qpa ;
}
$qpa = db_construct_qpa ($qpa,
- 'SELECT forum.msg_id, ts_headline(forum.subject, q) AS subject, forum.post_date, users.realname, forum_group_list.forum_name FROM forum, users, forum_group_list, forum_idx, to_tsquery($1) as q ',
- array ($this->getFTIwords())) ;
+ 'SELECT forum.msg_id, ts_headline(forum.subject, q) AS subject, forum.post_date, users.realname, forum_group_list.forum_name, forum.subject||$2||forum.body as full_string_agg FROM forum, users, forum_group_list, forum_idx, to_tsquery($1) as q ',
+ array ($this->getFTIwords(),
+ ' //// ')) ;
$qpa = db_construct_qpa ($qpa,
'WHERE users.user_id = forum.posted_by AND vectors @@ q AND forum.msg_id = forum_idx.msg_id AND forum_group_list.group_forum_id = forum.group_forum_id AND forum_group_list.is_public <> 9 AND forum.group_forum_id IN (SELECT group_forum_id FROM forum_group_list WHERE group_id = $1) ',
array ($this->groupId));
$qpa = db_construct_qpa ($qpa,
'AND forum_group_list.is_public = 1 ') ;
}
+
+ if(count($this->phrases)) {
+ $qpa = db_construct_qpa ($qpa,
+ 'AND (') ;
+ $qpa = $this->addMatchCondition($qpa, 'full_string_agg');
+ $qpa = db_construct_qpa ($qpa,
+ ') ') ;
+ }
+
$qpa = db_construct_qpa ($qpa,
'ORDER BY forum_group_list.forum_name ASC, forum.msg_id ASC, ts_rank(vectors, q) DESC') ;
} else {
$qpa = db_construct_qpa ($qpa,
- 'SELECT forum.msg_id, forum.subject, forum.post_date, users.realname, forum_group_list.forum_name FROM forum, users, forum_group_list WHERE users.user_id = forum.posted_by AND forum_group_list.group_forum_id = forum.group_forum_id AND forum_group_list.is_public <> 9 AND forum.group_forum_id IN (SELECT group_forum_id FROM forum_group_list WHERE group_id = $1) ',
- array ($this->groupId)) ;
+ 'SELECT x.* FROM (SELECT forum.msg_id, forum.subject, forum.post_date, users.realname, forum_group_list.forum_name, forum.subject||$1||forum.body as full_string_agg FROM forum, users, forum_group_list WHERE users.user_id = forum.posted_by AND forum_group_list.group_forum_id = forum.group_forum_id AND forum_group_list.is_public <> 9 AND forum.group_forum_id IN (SELECT group_forum_id FROM forum_group_list WHERE group_id = $2) ',
+ array (' //// ',
+ $this->groupId)) ;
if ($this->sections != SEARCH__ALL_SECTIONS) {
$qpa = db_construct_qpa ($qpa,
'AND forum_group_list.group_forum_id = ANY ($1) ',
'AND forum_group_list.is_public = 1 ') ;
}
$qpa = db_construct_qpa ($qpa,
- 'AND ((') ;
- $qpa = $this->addIlikeCondition ($qpa, 'forum.body') ;
- $qpa = db_construct_qpa ($qpa,
- ') OR (') ;
- $qpa = $this->addIlikeCondition ($qpa,'forum.subject') ;
+ ') AS x WHERE ') ;
+ $qpa = $this->addIlikeCondition ($qpa, 'full_string_agg') ;
$qpa = db_construct_qpa ($qpa,
- ')) ORDER BY forum_group_list.forum_name, forum.msg_id') ;
+ ' ORDER BY x.forum_name, x.msg_id') ;
}
return $qpa ;
}