0

我使用全文搜索+ 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 = 包含搜索的短语。

代码按以下方式对记录进行排序:

  1. 标题中包含搜索短语的记录。
  2. 在关键字中。
  3. 和 4° 在描述和 URL 中。

效率低下,因为 ('$frase*' IN BOOLEAN MODE) 提供了数百条不相关的记录。但我需要包含 3 个字母的记录,例如:DNA、Sun 等。

我需要带有 3 个字母的单词,但也需要相关的结果。

4

0 回答 0