2010-06-19 69 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(),您可以比较当前日期。但是你必须在新的日期之间找到一个好的中间方法不会影响你的度量标准,旧的日期不会影响你的度量标准。