我正在一個網站上進行搜索功能,讓用戶搜索mysql數據庫中保存的值。使用php搜索mysql,如何在用戶的搜索字符串中產生(和,或不)功能?
舉例:
該表中有兩種產品。
一個描述值爲「焦炭罐330ml」,另一個「精靈罐330ml」。
現在當搜索這些項目,說一個用戶輸入可以作爲他們的字符串。兩項都顯示,因爲它們都包含can。
如果用戶輸入可樂,可樂就會被退回。
現在想象一下,你已經在數據庫中製造了每一罐汽水,每一種都是作爲一種產品製成的。
像這樣的搜索功能,會有點麻煩。說一個用戶只想要兩個產品,這就是可樂和雪碧罐。
他們將需要尋找像「可口可樂或雪碧並可以和330毫升」
這應該只返回我的例子中使用的兩種產品。
不是我面對的問題是這個。我的搜索功能像我的原始示例一樣運行。我試圖包括某種和,或者不是功能,還沒有完全決定這應該如何工作。
目前,「可樂罐」的搜索將只返回包含可樂和罐頭的結果。但是,如果我搜索「焦炭精靈可以」沒有結果將被返回,因爲沒有結果包含字符串中使用的所有單詞。
下面是該查詢:
$dataQuery = "
SELECT *
FROM `products`
WHERE upper(`desc`)
LIKE '%"
. implode("%'
AND upper(`desc`)
LIKE '%",
$keywords_array)
. "%'
ORDER BY `desc`";
$keywords_array
是從用戶輸入的搜索字符串建立一個數組,驗證後,該代碼如下:
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);
$_SESSION['find'] = $find;
$keywords_array = explode(' ', $find);
$find
是字符串由用戶輸入的搜索字符串的後置值設置。
有沒有人有一個好的方法來完成我已經解釋的任何想法?
如果您需要任何額外的代碼,或更好的解釋,請只問!
謝謝!
如果你在MyISAM表上,使用允許自然語言搜索「(可樂或雪碧)+可以」輸入語法的全文索引。 –