问题
我正在使用 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/