簡體   English   中英

使用PHP從MySQL數據庫中選擇可能相關的項目(如:'orange',給'bread')

[英]Select items that may be related (like: for 'orange', give 'bread') from MySQL database using PHP

我有一個系統,我必須選擇“類似”的記錄。 想象一個包含大量產品列表的數據庫,當用戶輸入產品的部分名稱時,產品列表會顯示為他正在搜索的產品的建議 這些產品也有較長的描述字段。

我認為這不是關於WHERE product_name LIKE '%entered_string%'查詢。 邏輯類似於Stack Overflow可能使用的一個邏輯:當你問一個問題時,它會提示你可能已經有你的答案的問題類似的問題 ,兩者顯然都使用一種方法來推導我想從我的問題問題標題/內容和搜索數據庫,顯示結果。

我只是想知道它是否可以用PHP完成並使用MySQL作為數據庫。

示例:輸入food應該給我們1kg orangesbreadcookies 這兩者都有類似的東西,可以幫助他們以編程方式相互鏈接。

有很多方法可以處理這種情況 但我認為直接就是每個項目都有多個關鍵字/標簽 因此,當用戶輸入時,您不會 搜索項目表 ,您應該搜索映射的關鍵字並根據搜索加載相關項目。

如果要顯示類似產品,則需要將該信息放入數據庫中。 因此,為食品制作一個類別,並將每種食品分配到該類別。 這樣您就可以輕松選擇類似的產品。 沒有其他有效的方法可以做到這一點

所以你的數據庫:

categories:
|id|name
 1    fruit
 2    Cars

Products
|id|name|category_id
  1  apple 1
  2  Ford focus  2

你可以這樣選擇:

SELECT `name`,`id` FROM `products` WHERE category_id = 1;

另一種方式(如評論中所示)是標簽

Products
|id|name|tags
  1  apple "fruit food delicious" 
  2  Ford focus  "Car wheels bumper"

最好的方法是在標簽上使用全文搜索:

SELECT * FROM `products` WHERE MATCH(tags) AGAINST ('fruit')

確保標簽上有全文索引。

暫無
暫無

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

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