LIKE 関数を使用するだけでなく、より複雑な検索機能を構築しようとするのはこれが初めてです。この検索から返された結果はほぼ完璧ですが、実行速度が非常に遅いです。スピードアップのためにコードに関して改善できることはありますか、またはデータベースで確認する必要があることはありますか? または、より多くのサーバーパワーを検討する必要がありますか?
ありとあらゆる助けに感謝します。それは大歓迎です!
function new_live_search($q){
$title_score = 5;
$tags_score = 10;
$upvote_score = 1;
$subdomain = $this->config->item('subdomain_name');
$query = "SELECT DISTINCT results.*,
(
".$title_score."*(MATCH(title) AGAINST('$q' IN BOOLEAN MODE)) +
".$tags_score."*(MATCH(tags.name) AGAINST('$q' IN BOOLEAN MODE)) +
".$upvote_score."*usefulness
) AS score
FROM results
LEFT JOIN tags ON results.id = tags.result_id
WHERE (scope = 'all' OR scope = '$subdomain')
AND (published = 1)";
$query .= "
HAVING score - usefulness > 0
ORDER BY score DESC, title";
$query = $this->db->query($query);
$results = array();
foreach ($query->result() as $row){
$results[] = $row;
}
return $results;
}