首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将用户输入的标题与类别较大的INNODB数据库进行匹配

问将用户输入的标题与类别较大的INNODB数据库进行匹配
EN

Stack Overflow用户
提问于 2013-07-19 16:08:11
回答 1查看 91关注 0票数 1

我有一个大型的INNODB数据库,上面有200多万个产品。“products”表有以下字段: id、title、description、category。

还有一个名为'category‘的MyISAM表,其中包含网站上使用的所有类别的列表。它有以下字段: id、名称、关键字、parentid。

我的问题更多的是关于逻辑而不是代码,但我试图实现的是:

当用户在网站上列出一个新产品时,当他们输入描述时,它应该尝试确定将产品放入哪个类别(以良好的准确性)。

我最初尝试使用MySQL MATCH()将输入的标题与category表中的关键字列表进行匹配,但这并不准确。

一个更好的想法似乎是将用户输入的标题与数据库中已有产品的标题进行匹配,根据所在的类别对它们进行分组,然后按最大的组对它们进行排序。然而,在INNODB数据库上,我显然不能使用全文,而对于2mill项,我认为它无论如何都会相当慢?

你会怎么做--我想它需要类似于stackoverflow显示类似问题的方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-19 17:04:42

如果您在一台不错的服务器上运行,那么对两百万条记录建立全文索引是一个有效的选择。初始索引将需要一段时间,这是肯定的,但搜索应该是相当快的,MySQL可以接受。

从v5.6.4开始,InnoDB支持全文索引。您应该考虑升级。

如果不能升级,请参阅我建议解决方法的this previous answer of mine。

对于您的用例,您可能希望查看WITH QUERY EXPANSION选项:

它的工作原理是执行两次搜索,其中第二次搜索的搜索短语是与第一次搜索中几个高度相关的文档连接在一起的原始搜索短语。因此,如果其中一个文档包含单词“databases”和单词“MySQL”,则第二次搜索将查找包含单词“MySQL”的文档,即使这些文档不包含单词“database”

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

https://stackoverflow.com/questions/17741117

复制
相关文章

相似问题

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