首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到相似的产品

如何找到相似的产品
EN

Stack Overflow用户
提问于 2017-07-29 08:10:57
回答 3查看 1.9K关注 0票数 3

我正在创建php和mysql的价格比较网站。因此,我需要找到类似的产品和地图,以创建价格比较表。在我的数据库中,10,000+产品是可用的,因此为了找到类似的产品,我在“产品名称”和“描述”列中创建了mysql全文索引,并将产品与其他产品进行了比较,但是我无法获得所需的结果,例如,如果我搜索

搜索“三星银河A7 (2017) 32 get”,得到结果:

  1. 三星Galaxy A7 32 A7 (2017)
  2. 三星Galaxy A7智能手机
  3. 三星Galaxy J7 (2017) 32 J7黑
  4. 三星Galaxy A7 64gb (新款)
  5. 三星银河J7 16 J7
  6. 三星Galaxy J7 (16 J7,黑色)
  7. 三星Galaxy J2 Pro (16 J2)
  8. 三星Galaxy A5 (32 A5)
  9. 三星银河S7边缘32 S7蓝色珊瑚

注意:在结果集中,只有前两种产品和第四种产品是相似的,而不是其他产品。

现在,我有一个问题:

如何从搜索查询中找到重要关键字,使关键字至少在其他产品中才能知道相似度?例如,在上面的搜索查询“三星银河A7”是重要的关键字,这应该是其他产品的结果。我们人类可以知道,“三星银河A7”是三星银河A7 (2017) 32 to与其他产品相比的重要关键词,但如何才能知道计算机程序呢?

在图像比较中,有任何算法可以像sift算法一样,用重要的关键字来比较相似的产品。

如果你有什么好的方法来寻找类似的产品,请给我建议。

EN

回答 3

Stack Overflow用户

发布于 2018-01-30 03:38:30

看看弹性搜索,这是一个搜索引擎。

它可以进行关键字搜索和按分数返回结果。

您可以在某些方面提高或减少分数,但它不够聪明,以确定关键字,如人。

但是,它可以确定文档中的通用术语(如“the”、“a”.或“32 in”,如果有许多模型使用该术语)。并调整这些常见术语的得分,以降低分数。(ES通用术语查询)

Elasticsearch功能强大(因为它的复杂性),它可以有许多更好的解决方案来解决这个问题。

编辑:一个很好的文章关于“通用术语查询”和“停止词列表”。如果你想要的话,秒针可以永久地排除这些规格。有时,如果记录数据不够广泛,“通用术语查询”就无法工作。(例:三星Galaxy比32 ex更频繁)

票数 1
EN

Stack Overflow用户

发布于 2017-07-29 10:43:50

听起来像一个简单的,像

代码语言:javascript
复制
SELECT name FROM products WHERE name LIKE 'Samsung Galaxy A7%';

这将选择所有以“三星银河A7”开头的产品。如果您也想选择那些不以名称开头但只包含该名称的名称,请将其更改为

代码语言:javascript
复制
WHERE name LIKE '%Samsung Galaxy A7%'
票数 0
EN

Stack Overflow用户

发布于 2017-07-29 13:47:16

我想我会用空格来分割它们,删除空格,并将所有的单词围绕在LIKE %str% AND上--类似这样:

代码语言:javascript
复制
$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 )

但我敢打赌这里肯定有一个专门的搜索库,在这里,这些问题已经解决了.很可能

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45386993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档