我有這樣的SQL查詢:mysql搜索。要求所有關鍵字
SELECT DISTINCT url FROM paragraphs WHERE
MATCH (title) AGAINST('$query') ORDER BY
MATCH (title) AGAINST('$query') DESC
會發生什麼事,雖然是當我搜索,例如,對於「約翰·史密斯」我得到的「約翰」,「約翰·錢伯斯」 ...等。我怎樣才能讓這兩個詞都是必需的?
我有這樣的SQL查詢:mysql搜索。要求所有關鍵字
SELECT DISTINCT url FROM paragraphs WHERE
MATCH (title) AGAINST('$query') ORDER BY
MATCH (title) AGAINST('$query') DESC
會發生什麼事,雖然是當我搜索,例如,對於「約翰·史密斯」我得到的「約翰」,「約翰·錢伯斯」 ...等。我怎樣才能讓這兩個詞都是必需的?
你可以額外LIKE
條款添加到你這裏來過濾掉所有不需要的匹配:
SELECT DISTINCT url FROM paragraphs WHERE
MATCH (title) AGAINST('$query') AND title LIKE "%$query%"
ORDER BY MATCH (title) AGAINST('$query') DESC
因此,你有得分,只有結果精確匹配。
在布爾搜索使用+
應所需的所有的話:
<?php
$query = str_replace(" "," +",$query);
$sql = "SELECT DISTINCT url FROM paragraphs WHERE
MATCH (title) AGAINST('$query' IN BOOLEAN MODE))
ORDER BY score DESC;"
?>
'WHERE標題LIKE '%約翰·史密斯%''?你不需要FULLTEXT來做直接的子字符串搜索。 –
爲此,您可以嘗試使用「LIKE」而不是使用全文搜索。 – Balanivash
嗯,我想使用索引...這將以相同的效率工作嗎? – re1man