【发布时间】:2012-04-01 02:35:15
【问题描述】:
假设我希望识别文档的几页(可能大约 500 多页)中出现的所有单词。我已经完成了查找单词出现在哪些页面上的工作。因此,例如,我想列出出现计算机一词的所有页面。
存储这些数据以便通过网络服务快速搜索的最佳方式是什么?我的直觉是做类似的事情:
表结构: varchar(30) WORD, blob PAGES
并且让 PAGES 字段是一个逗号分隔的列表,包含该单词出现的所有页面,然后在查询匹配 WORD 字段时将其展开并列出所有页面。我想知道是否有更有效的方法来实现这一目标?我可能会使用 MySQL 和 PHP/Zend,因为那是我最熟悉的。但是,如果您有任何更好的想法,我绝对愿意听取他们的意见。
表格可能会变得非常长,因为我需要为文档中的每个唯一单词留一行。也许我会设置一个不超过 3 或 4 个字符的限制,但我仍然会想象超过 10-20k 个单词。如果我按字母顺序排列行列表,我能以某种方式使我的数据库服务器更容易吗? (即苹果、苹果、分支是升序排列的?) MySQL 可以处理这个吗?其他东西能更好地处理它吗?
最后,是否有更好的结构模式可以让我以后收集/提供有趣的数据? (即给用户经常出现在附近的相关词等)
【问题讨论】:
标签: mysql database-design indexing