我正在创建php和mysql的价格比较网站。因此,我需要找到类似的产品和地图,以创建价格比较表。在我的数据库中,10,000+产品是可用的,因此为了找到类似的产品,我在“产品名称”和“描述”列中创建了mysql全文索引,并将产品与其他产品进行了比较,但是我无法获得所需的结果,例如,如果我搜索
搜索“三星银河A7 (2017) 32 get”,得到结果:
注意:在结果集中,只有前两种产品和第四种产品是相似的,而不是其他产品。
现在,我有一个问题:
如何从搜索查询中找到重要关键字,使关键字至少在其他产品中才能知道相似度?例如,在上面的搜索查询“三星银河A7”是重要的关键字,这应该是其他产品的结果。我们人类可以知道,“三星银河A7”是三星银河A7 (2017) 32 to与其他产品相比的重要关键词,但如何才能知道计算机程序呢?
在图像比较中,有任何算法可以像sift算法一样,用重要的关键字来比较相似的产品。
如果你有什么好的方法来寻找类似的产品,请给我建议。
发布于 2018-01-30 03:38:30
发布于 2017-07-29 10:43:50
听起来像一个简单的,像
SELECT name FROM products WHERE name LIKE 'Samsung Galaxy A7%';这将选择所有以“三星银河A7”开头的产品。如果您也想选择那些不以名称开头但只包含该名称的名称,请将其更改为
WHERE name LIKE '%Samsung Galaxy A7%'发布于 2017-07-29 13:47:16
我想我会用空格来分割它们,删除空格,并将所有的单词围绕在LIKE %str% AND上--类似这样:
$search='Samsung Galaxy A7 (2017) 32gb';
$split=preg_split('/\s+/u',$search);
$query='SELECT * FROM tbl WHERE ';
foreach($split as $str){
$query.='`name` LIKE \'%'.$db->real_escape_string($str).'%\' AND ';
}
$query=substr($query,0,-strlen(' AND '));
var_dump($query);SELECT * FROM tbl WHERE `name` LIKE '%Samsung%' AND `name` LIKE '%Galaxy%' AND `name` LIKE '%A7%' AND `name` LIKE '%(2017)%' AND `name` LIKE '%32gb%'的内容(测试代码:https://3v4l.org/30llU )但我敢打赌这里肯定有一个专门的搜索库,在这里,这些问题已经解决了.很可能
https://stackoverflow.com/questions/45386993
复制相似问题