【发布时间】:2011-10-30 21:18:12
【问题描述】:
我正在处理网站转换。我将数据库后端转储为 sql 文件。我还从 wget 抓取了网站。
我想要做的是将数据库表和列映射到抓取中的目录、页面和页面部分。我想自动化这个。
是否有一些工具或脚本可以从一个源中提取字符串并在另一个源中查找它们?理想情况下,它会返回一组结果,类似于
string "piece of website content here" on line 453 in table.sql matches string in website.com/subdirectory/certain_page.asp on line 56.
我不想进行行比较,因为来自数据库转储 (INSERT INTO table VALUES (...)) 的行不会匹配它实际填充的页面中的行 (<div id='left_column'><div id='left_content'>...</div></div>)。
我意识到这是一项计算密集型任务,但即使让它在周末运行也可以。
我发现了类似的问题,但我没有足够的 CS 背景知识来知道它们是否与我的问题相同。所以好心地建议this question,但它似乎正在处理一组已知的针来匹配大海捞针。就我而言,我需要将 haystack 与 haystack 进行比较,并查看匹配的干草吸管。
是否有命令行脚本或命令,或者这是我需要构建的东西?如果我构建它,我应该按照另一个问题中的建议使用 Aho–Corasick 算法吗?
【问题讨论】:
-
你能详细说明一下这个问题吗?您是否允许预处理这两个转储文件以消除不必要的格式?您是在寻找完整的数据库行匹配,还是只是在一个出现在另一个中的字符串?
-
我可以稍微处理一下文件。这对于数据库转储来说很容易,但对于网站文件来说即使不是不可能也更难,因为我不能假设它们结构良好。但是,如果我的程序可以进行字符串匹配,为什么还要费心清理文件呢?我只想要映射。
-
我只是在寻找字符串匹配。
Line 12 of file A has string "piece of content" that matches line 45 of file B -
清理文件可能会很好,因为这样您就不会在包含格式和实际文本混合的垃圾字符串之间找到虚假匹配。但是,如果这不是问题,那么您是绝对正确的,您不需要执行此步骤。
-
我看不出任何虚假匹配的可能性。 sqldump 不会将 HTML 作为元数据。但是,如果它确实将其作为字段数据——这意味着页面内容被存储在数据库中——我会想知道它是否匹配!并且网页文件不会以 DDL 或 DCL 作为内容。
标签: string algorithm search dictionary