我正在做一个构建在线协作工具的项目。查看 Wikipedia,我注意到用户生成的页面迭代可以很容易地相互比较;比较突出了差异。
从概念上讲,我需要实现什么来做几乎完全相同的事情?
我正在做一个构建在线协作工具的项目。查看 Wikipedia,我注意到用户生成的页面迭代可以很容易地相互比较;比较突出了差异。
从概念上讲,我需要实现什么来做几乎完全相同的事情?
综合良好的建议:
最简单的方法是使用任何现有的 wiki 引擎。有很多好的 wiki 引擎。不要重新发明轮子。
例如,StackOverflow 本身就是一个自定义构建的 wiki。查看 Stack Overflow 上的编辑查看器,了解其功能与问题中描述的功能的匹配程度。
您将需要一个版本化的数据存储和一个差异算法。
通过为每个资源提供修订号来存储资源的版本。当用户编辑资源而不是替换资源时,将编辑保存为数据存储中的新条目,并使用新的更高修订号。当您要检索资源时,返回具有最高修订版本的资源。
您可以使用时间戳来代替修订号。不仅时间戳总是增加,而且修订号本身也可用于识别资源何时被修改。
根据您存储资源的方式选择差异算法。Wikitext 通常是逐行的,所以如果用户正在编辑它,使用像标准 Unixdiff
实用程序这样的逐行差异是有意义的。如果资源是 XML,您可能希望找到一种特定于 XML 的差异算法,以便用户清楚地知道差异在哪里。