我正在使用curl,libxml2和mysql在C中编写一个小型搜索引擎。基本计划是使用curl抓取页面,使用libxml2解析它们,然后遍历DOM并查找所有链接。然后遍历其中的每一个,并重复,同时更新维护URL之间关系的SQL数据库。
我的问题是:如何才能最好地代表网址之间的关系?
答案 0 :(得分:7)
为什么不使用这些示例列的基本网址表(即www.google.com/)和连接表:
这将允许您加入某些网址并选择您想要的信息。
您的解决方案似乎更适合非关系型数据存储,例如列存储。
大多数搜索引擎索引不存储在关系数据库中,而是存储在内存中以最小化检索时间。
答案 1 :(得分:3)
向表中添加两个字段 - 'id'和'parent_id'。
id - URL的唯一标识符 parent_id - URL的
之间的链接答案 2 :(得分:2)
如果您希望为每个URL创建一个条目,则应创建另一个映射关系的表。
然后查找URL表以查看它是否存在。如果没有创建它。
关系表有
SourceUrlId,
UrlId
SourceUrlId是页面,UrlId是它指向的url。这样,您可以为同一个URL设置多个关系,并且您不需要在Url表中为该URL的每个链接都有一个新条目。也意味着只存储您存储的任何其他信息的1份。
答案 3 :(得分:2)
为什么您对表示页面图感兴趣?
如果你想计算排名,那么最好有一个更简洁有效的表示(例如,如果你想计算类似于PageRank的东西,那就是matricial形式)。