我目前正忙於創建一個搜索功能,查詢用戶輸入字符串對一個MySQL表中的某一行。PHP/MYSQL - 需要一個更好的方式去這個FULLTEXT搜索查詢
這是代碼的樣子至今:
$space_separated = implode(" ", $keywords_array);
$dataQuery = "SELECT id, `desc`, price1, pack, measure, quantity
FROM products
WHERE MATCH (`desc`)
AGAINST ('".$space_separated."' IN BOOLEAN MODE)";
這是不太提供所需的功能。我知道在布爾模式下,我不喜歡使用評分。但我的問題是,這段代碼確實會返回任何字詞上的部分匹配。
一個例子是,如果用戶搜索「巧克力」,他們搜索「olate」,則不會返回任何匹配。我將如何解決這個問題?
@馬克
是你建議嗎?
$dataQuery = "SELECT id, `desc`, price1, pack, measure, quantity
FROM products
WHERE MATCH (`desc`)
AGAINST ('".$space_separated."' IN BOOLEAN MODE)
OR MATCH (`desc`)
AGAINST ('".$space_separated."')";
添加'...或匹配(...)'以進行自然語言匹配(再次執行全文,但沒有'布爾模式')? –
@Mark感謝您對此的意見,請參閱我的文章中的編輯。那是你所指的? –
是的,非常。但正如下面的golez所指出的那樣,除非你添加通配符,否則fulltext只能匹配全部單詞。 –