フルテキストがうまく機能しないという理由だけで、フルテキストが本当に嫌いなので、ロングマッチを使用することにしました。このコードの速度を改善する方法があるかどうか疑問に思っていました。私はそれがかさばることと、その 99% ががらくたであることを理解しています。しかし、私が本当に望んでいたのは、テーブル全体を見て、関連性によってこれをソートできるものだけでした.
if (isset($_GET['post_title'])) {
$colname_getPosts = $_GET['post_title'];
}
mysql_select_db($database_Main);
function test($string){
$output = '';
$array = explode(' ', $string);
foreach ($array as $arraytags) {$output .= ' OR MATCH(post_title, post_entry, post_author, tags)
AGAINST("%'.$arraytags.'"IN BOOLEAN MODE)'; }
$array = explode(' ', $string);
foreach ($array as $arraytags) {$output .= ' OR MATCH(post_title, post_entry, post_author, tags)
AGAINST("%'.$arraytags.'%"IN BOOLEAN MODE)'; }
$array = explode(' ', $string);
foreach ($array as $arraytags) {$output .= ' OR MATCH(post_title, post_entry, post_author, tags)
AGAINST("'.$arraytags.'%"IN BOOLEAN MODE)'; }
$array = explode(' ', $string);
foreach ($array as $arraytags) {$output .= ' OR MATCH(post_title, post_entry, post_author, tags)
AGAINST("'.$arraytags.'"IN BOOLEAN MODE)'; }
return $output;
}
$query_getPosts = "
SELECT post_id, post_date, post_title, post_author, post_entry, tags, sum(relevance)
FROM (
SELECT post_id, post_date, post_title, post_author, post_entry, tags, 10 AS relevance FROM blog_posts WHERE MATCH(post_title) AGAINST('%$colname_getPosts%' IN BOOLEAN MODE)
UNION
SELECT post_id, post_date, post_title, post_author, post_entry, tags, 2 AS relevance FROM blog_posts WHERE MATCH(post_author) AGAINST('%$colname_getPosts%' IN BOOLEAN MODE)".test($colname_getPosts)."
UNION
SELECT post_id, post_date, post_title, post_author, post_entry, tags, 5 AS relevance FROM blog_posts WHERE MATCH(post_entry) AGAINST('%$colname_getPosts%' IN BOOLEAN MODE)
UNION
SELECT post_id, post_date, post_title, post_author, post_entry, tags, 7 AS relevance FROM blog_posts WHERE MATCH(tags) AGAINST('%$colname_getPosts%' IN BOOLEAN MODE))results
GROUP BY post_id, post_date, post_title, post_author, post_entry, tags ORDER BY relevance DESC";
どうすれば改善できますか、コードは簡単ですか?