mysql - 在关系数据库中构建搜索索引的策略

标签 mysql database-design data-structures relational-database

我对在我正在构建的新数据库(我正在使用 MySql)中构建高效、健壮的产品索引结构的建议感兴趣

当通过表单输入产品时,我有兴趣对三个部分进行索引以进行搜索。

  1. 产品标题
  2. 产品描述
  3. 标签

最重要的是标题,其次是标签,最后是描述。

我正在考虑使用以下结构

CREATE TABLE `searchindex` (
`id` INT NOT NULL ,
`word` VARCHAR( 255 ) NOT NULL ,
`weighting` INT NOT NULL ,
`product_id` INT NOT NULL ,
PRIMARY KEY (  `id` )
)

然后,每次创建产品时,我都会将标题、描述和标签分开(删除常用词)并给予它们一个权重。

然后选择单词和相应的产品并通过权重排序就很简单了。

有更好的方法吗?我担心这个策略会随着时间的推移和数据库的填满而减慢速度。

最佳答案

对于标题,您可能只索引前几个字符,以便在匹配时获得较小的子集,但对于描述,您应该真正考虑 fulltext指数。这可以自动加权并找到最佳匹配

关于mysql - 在关系数据库中构建搜索索引的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3059863/

相关文章:

sql-server - 什么是金融操作中的锁定、死锁问题?

mysql - 创建博客数据库

java - ConcurrentSkipListMap 是否对键修改进行排序? (以及其他自动排序结构)

java - 具有大量变异的矩阵的最佳数据结构

mysql - 如何根据不等于删除巨大的mysql行

mysql - 带有更新的 Mysql 存储过程

mysql - 如何向复杂的 select 语句添加条件

mysql - 频繁更新单个表与使用另一个表和 CRON 将更改导入 MySQL 中的主表?

algorithm - 从间隔列表中有效地找到重叠间隔

mysql - 优化表以提高性能