mysql - 我应该如何处理 MyISAM 搜索索引中重复条目的权重?

标签 mysql search myisam

问题

我正在使用 myisam_ftdump 的结果生成搜索建议表。这个过程很顺利,但是很多词多次出现在索引中。显然,我可以从建议中选择不同的术语 ORDER BY Weight,但这不会惩罚出现多次的单词吗?

如果是,是否有一个简洁的公式来合并行?

如果没有,我应该保留哪些行(例如,权重最高、权重最低)?

示例数据

+-----+------------+----------+
| id  | word       | weight   |
+-----+------------+----------+
| 670 | young      | 0.416022 |
| 669 | york       |  0.54944 |
| 668 | years      | 0.281683 |
| 667 | years      | 0.416022 |
| 666 | wrote      | 0.416022 |
| 665 | written    |  0.35841 |
| 664 | writing    |  0.29518 |
| 663 | wright     | 0.281683 |
| 662 | witness    | 0.281683 |
| 661 | wiesenthal | 0.452452 |
| 660 | white      |  0.35841 |
| 659 | white      | 0.281683 |
| 658 | wgbh       | 0.369332 |
| 657 | weighs     |  0.35841 |
+-----+------------+----------+

特别参见“白色”和“年份”。

最佳答案

看起来您运行了myisam_ftdump -d。我认为您想使用 myisam_ftdump -c 来代替。

这将为您提供每个单词一行,以及该单词在索引中出现的次数及其全局权重。

这是关于 -c 与 -d 的文档:

  -c, --count         Calculate per-word stats (counts and global weights).
  -d, --dump          Dump index (incl. data offsets and word weights).

关于mysql - 我应该如何处理 MyISAM 搜索索引中重复条目的权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5225696/

相关文章:

mysql - Codeigniter 复杂的 MySQL 查询 - 删除反引号 - 这是一个安全问题吗?

Javascript 字符串搜索问题

Mysql、InnoDB 到 MyISAM 进行全文索引

ruby-on-rails - 搜索标签 act_as_taggable_on rails

c - 在数组中搜索特定标记/字符串 C

php - 生成数据库 MyISAM Doctrine 2

mysql - 找不到简单的 sql 列

php - 在执行 LOAD DATA LOCAL INFILE 之前验证数据

mysql - 带数组的 SQL 查询