全文検索+BOOLEAN MODEを使っていますが、効率が悪いです。これは私のコードです:
$sssql = $server_link->query("SELECT uDR.webTitulo, uDR.webDescripcion, uDR.webkeywords, uDR.weburl, SUM(uDR.priority) as SPriority
FROM (
(SELECT s1.webTitulo, s1.webDescripcion, s1.weburl, s1.webkeywords, $a as priority FROM webs s1 WHERE MATCH (webTitulo) AGAINST ('$frase'))
UNION
(SELECT s2.webTitulo, s2.webDescripcion, s2.weburl, s2.webkeywords, $b as priority FROM webs s2 WHERE MATCH (webkeywords) AGAINST ('$frase*' IN BOOLEAN MODE))
UNION
(SELECT s3.webTitulo, s3.webDescripcion, s3.weburl, s3.webkeywords, $c as priority FROM webs s3 WHERE MATCH (webDescripcion) AGAINST ('$frase'))
UNION
(SELECT s4.webTitulo, s4.webDescripcion, s4.weburl, s4.webkeywords, $d as priority FROM webs s4 WHERE MATCH (weburl) AGAINST ('$frase'))) uDR
GROUP BY uDR.webTitulo, uDR.weburl, uDR.webDescripcion, uDR.webkeywords
ORDER BY SPriority DESC ");
$frase = 検索されたフレーズが含まれています。
コードは次の基準でレコードを並べ替えます。
- タイトルに検索語句を含むレコード。
- キーワードで。
- そして 4° 説明と URL で。
('$frase*' IN BOOLEAN MODE) は何百もの無関係なレコードを配信するため、非効率的です。しかし、3文字の記録が必要です。例: DNA、太陽など.
3 文字の単語だけでなく、関連する結果も必要です。