簡體   English   中英

根據搜索查詢從數據庫中返回行

[英]Returning rows from database based on search query

我有一個具有以下架構的產品表:

products (itemname VARCHAR(50), itemid INT(10));

示例記錄如下所示( itemnameitemid ):

  • blackberry曲線3g(黑色),1
  • 三星王牌,3
  • blackberry曲線3g(白色),2
  • 蘋果 iphone 4 32gb(黑色),4

現在假設用戶在網站的搜索框中輸入查詢並顯示相應的結果。 即,如果用戶輸入blackberry則應顯示 Blackberry 手機

我正在尋找以下問題的答案:

  1. 搜索文本如何與項目匹配? 例如:用戶可以在搜索框中輸入blackberry那么如何搜索呢? 我應該搜索blackberry字作為上表itemname列的子字符串嗎?
  2. 如果用戶輸入兩個詞,例如: apple 32gb 現在,如果我使用上述子字符串的方法,那么它將不起作用,因為表中沒有將apple 32gb作為子字符串的行。 在這種情況下如何搜索?
  3. 如果用戶輸入非常通用的搜索文本,例如: mobiles 在這種情況下,應該顯示所有的手機。 在這種情況下,將itemname匹配為子字符串也不起作用。
  4. 用戶可以輸入搜索文本: apple 32gb black color 在這種情況下,應該顯示 32GB 容量和黑色的蘋果產品。

我知道實現 100% 正確的搜索是不可能的。 我只是在尋找提示/如何進行。 我正在使用 PHP、MySQL、Apache。

這是什么類型的數據庫,如果 MySQL 您可以在字段上啟用全文搜索,然后只需一個簡單的查詢即可獲得您期望的結果。

對於許多單詞搜索,我會做這樣的事情:

$searchArray = explode(" ", $searchString);
foreach ($searchArray as $word)
{
    //add an OR clause to your sql query like the following
    $query .= "OR itemname like %".$word."%";
}

其他問題要復雜得多,但我希望這會有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM