MySQL中搜索相关性的控制
在MySQL中,控制搜索引擎信任度的可能方法是什么?让我们假设我们正在为一家小型网络商店构建一个搜索引擎,买家可以在其中添加要出售的内容。表格如下:MySQL中搜索相关性的控制,mysql,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 (
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李>
- 买方级别:越高越好。黄金买家的级别为10,不良买家的级别为1。 重量=5李>
- 日期:更新的是 更好。重量=5
示例:
如果表中有以下行:
1、IPhone,2010年5月22日,9
2、IPhone,2010年5月22日,1
如果用户搜索Iphone,第一行应该排在第一,第二行应该成为最后一行,因为第一行比第二行有更多的重量。除非你更准确地定义“更新的”,否则不能真正强调日期
ORDER BY (
IF(title LIKE '%search%' ,10,0)
+ buyer_level
+ IF(5 - DATEDIFF(NOW(),date) < 0,0,5 - DATEDIFF(date,NOW()))
) DESC,
orderby(
IF(标题类似“%search%”,10,0)
+买方级别
+如果(5-DATEDIFF(NOW(),date)<0,0,5-DATEDIFF(date,NOW())
)描述,
日期是一个更大的问题,使用CURRENT_Date()可以与当前日期进行比较。但是,你必须在新日期对你的衡量标准影响不大和旧日期对你的衡量标准影响不够之间找到一个好的折衷办法
select IF(title='IPhone',10,0)+buyer_level from products;