2010-06-19 74 views
2

在MySQL中控制搜索引擎尊敬的可能方法是什麼?讓我們假設我們正在建立一個小型網絡商店的搜索引擎,買家可以在那裏添加東西出售。該表是:控制MySQL中的搜索相關性

CREATE TABLE `products` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`title` VARCHAR(100) NOT NULL , 
`date` DATE NOT NULL , 
`buyer_level` INT(2) NOT NULL , 
FULLTEXT (
`title` 
) 
) ENGINE = MYISAM ; 

我要給爲下列因素的權重:

  • 標題:與標題匹配輸入檢索關鍵詞,重量= 10。
  • Buyer_level:更高更好。黃金買家的水平是10,不好的買家是1. 重量= 5。
  • Date:newer is better。重量= 5。

問題是,我們如何根據權重的值使MySQL輸出結果?
實施例:
如果我們在表中的下列行:
1,IPhone,22-5-2010,9
2,IPhone,22-5-2010,1
如果用戶搜索關於Iphone,第一行應該是第一行,第二行應該是最後一行,因爲第一行比第二行更重要。

回答

0

除非您更仔細地定義「更新」,否則不能真正加重日期。

ORDER BY (
    IF(title LIKE '%search%' ,10,0) 
    + buyer_level 
    + IF(5 - DATEDIFF(NOW(),date) < 0,0,5 - DATEDIFF(date,NOW())) 
) DESC, 
1
select IF(title='IPhone',10,0)+buyer_level from products; 

日期是一個更大的問題,與CURRENT_DATE(),您可以比較當前日期。但是你必須在新的日期之間找到一個好的中間方法不會影響你的度量標準,舊的日期不會影響你的度量標準。