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

时间:2010-06-17 08:00:18

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

我感兴趣的建议是建立一个高效且健壮的结构,用于在我正在构建的新数据库中索引产品(我正在使用MySql)

当通过表单输入产品时,我有三个部分感兴趣的索引用于搜索目的。

  1. 产品名称
  2. 产品说明
  3. 标签
  4. 最重要的是标题,后跟标签,然后是说明。

    我正在考虑使用以下结构

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

    然后,每次创建产品时,我都会拆分标题,描述和标签(删除常用词)并为其授予权重。

    然后选择单词和相应的产品并通过加权对它们进行排序是微不足道的。

    有更好的方法吗?我担心随着时间的推移,随着数据库的填满,这种策略会变慢。

1 个答案:

答案 0 :(得分:1)

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