我有以下架構產品表:返回行
products (itemname VARCHAR(50), itemid INT(10));
記錄樣本顯示如下(itemname
,itemid
):
- 黑莓Curve 3G(黑色),1
- 三星王牌,3
- 黑莓曲線3G(白),2
- 蘋果iPhone 4 32GB(黑色),4
現在假設用戶輸入查詢到網站的搜索框和相應的結果是顯示。也就是說,如果用戶輸入blackberry
那麼黑莓手機應顯示
我要尋找以下問題的答案:
- 如何搜索文本與項目相匹配?例如:用戶可能在搜索框中輸入 輸入
blackberry
,那麼它可以如何搜索? 我應該尋找blackberry
字爲上表中的itemname
列的子串? - 如果用戶輸入兩個詞,如:
apple 32gb
。現在,如果我用 上述子串的提到的方法,然後它不會工作,因爲在其apple 32gb
作爲子字符串表中沒有任何行。如何在這種情況下搜索? - 如果用戶輸入像一個非常通用的搜索文本:
mobiles
。在這種情況下,應該顯示所有的手機。在這種情況下,將itemname
作爲子字符串匹配也不起作用。 - 用戶可以輸入搜索文本:
apple 32gb black color
。在這種情況下,應顯示32GB容量和黑色的蘋果產品。
我知道實現搜索100%正確是不可能的。我只是尋找提示/如何繼續。我正在使用PHP,MySQL,Apache。
嗨,吉姆,感謝您的回答。它有助於搜索像「三星手機」這樣的雙字搜索文本嗎?此外,我不認爲全文搜索將能夠爲通用查詢生成結果,例如:'mobiles','black color mobiles'等。 –
我在最近添加了全文和搜索網站,它正在搜索文章名稱和它迄今爲止已經在測試中取得了很好的結果。有很多的例子,但檢查到這個職位的好基地,http://devzone.zend.com/article/1304。 – Jim