我的网站有很多动态统计信息,其中包含人员,地点和主题的名称,这些名称都有自己的关联页面。我想根据我在'words'和'links'的MySQL数据库中设置的数据自动将这些内容链接到他们的页面。
自动链接20-50个可能的15-20,000个关键字和链接的有效方法是什么?我正在使用MySQL和PHP。
答案 0 :(得分:1)
通常,您希望尽可能不经常进行此类链接搜索,因为没有特别有效的方法来执行此操作。您没有指定您的网站上有哪种数据,但我会假设它类似于wiki或博客。我将讨论这种功能,因为它将用于维基,但类似的方法适用于任何事情。
使用wiki,您只希望在更改页面(或首先提交)时进行链接搜索。请注意,必须有两种不同的方式来处理链接。首先,在创建或编辑页面时,您需要搜索该页面的文本以确定其中应包含的链接。其次,无论何时创建,重命名或删除任何页面,您都需要(除了在创建的情况下搜索此页面)搜索所有其他页面以根据需要添加/更新/删除链接。如何存储这些链接有几个选项。
一种选择是在数据库中保留每个页面文本的两个“版本”。一个版本是原始的“标记”版本,这是您实际输入的内容,以及如果您选择编辑页面将显示的内容。第二个版本是解析/处理的“显示”版本。这是用于向普通观众显示页面的数据。
例如,如果您的wiki标记为粗体**
,则“标记版本”为**bold text**
,“显示版本”为<strong>bold text</strong>
。这使得您无需在每个页面视图上处理标记。
此方法适用于页面链接,方法是搜索提交的文本以查找应链接的单词,并将这些链接放入“显示版本”。例如,当提交页面时,您将逐步浏览页面文本中的每个单词,并将其与“链接单词”列表进行比较(确保缓存此列表,您不希望进行数据库查询每个字)。通过将潜在的链接字作为键存储到散列中,可以使这相当有效。如果正在测试的单词位于“链接词”列表中,则在将其复制到“显示版本”文本时,会在该单词周围放置相关页面的链接。如果不是这样,那么你就把它放进去了,就像它在“标记版本”中一样。
关于如何实现这一点还有其他一些选择,但这是一个相当简单的选择。我现在就把它留给你,但是如果你想让我描述其他任何选项,请在评论中告诉我,我会在其中进行编辑。
答案 1 :(得分:0)