我正在爲產品目錄創建搜索功能。
這是迄今爲止輸入代碼:
<form name="search" method="post" action="'.$PHP_SELF.'">
<div>
Search for: <input type="text" name="find" />
<input type="hidden" name="searching" value="yes" />
<input type="submit" name="search" value="Search" />
</div>
</form>
下面是查詢Mysql數據庫進行匹配查詢:
SELECT * FROM `products` WHERE upper(`desc`) LIKE'%$find%'
這一切工作完全正常,當用戶搜索一個單詞字符串。
這裏的問題在於,當用戶搜索兩個字符串時,找不到匹配項,因爲有時這些字符串與單獨的特徵相關。
這方面的一個例子是,在產品目錄中包含各種巧克力的信息:
你得到的巧克力條,巧克力盒,巧克力的包,等等
現在雖然一些字段desc
中的描述包含巧克力和酒吧,一些包含變體,如「公司酒吧120克巧克力」。
這會導致上述代碼中的問題,因爲如果用戶搜索「巧克力塊」,除非明確說明desc
字段中包含該變體,則不會返回任何匹配。
我想要發生的事情是,當用戶搜索「巧克力棒」時,包含巧克力和酒吧的所有匹配項都會返回。
有沒有人有任何關於如何去做這項工作的意見?
可能性將$find
轉換爲數組並使「」分隔符?
這是什麼類別/標籤的用途。 –
@Tomalak你好!我對此很新,但我會研究這些類別和標籤,感謝您的意見! –
我的意思是你會創建它們,爲它們編制索引並搜索它們,而不是強迫自己通過人類可讀的「描述」進行搜索。 –