gpt4 book ai didi

java - 最常访问的最大 URL 序列

转载 作者:搜寻专家 更新时间:2023-11-01 03:09:01 25 4
gpt4 key购买 nike

我有以下要求来实现,这对我来说是一个“难题”:
我有网络服务器和各种用户(经过身份验证和登录)访问网站的各个区域(即关注和浏览各种链接)。这些操作(或称为浏览)正在记录到日志文件中。
因此,这些文件会捕获用户访问服务器的日期以及它访问的各种链接,即 URL。
记录的简化格式(用于解释目的)如下:
时间戳用户名 URL-1
因此,为了给出我们可能拥有的日志的简化示例(为此假设有效日期):

Date-1 John    URL-1  
Date-1 Nick URL-1
Date-1 John URL-2
Date-1 George URL-1
Date-1 George URL-2
Date-1 Eve URL-2
Date-1 Nick URL-2
Date-1 John URL-3
Date-1 George URL-3
Date-1 John URL-5
Date-1 Nick URL-3
Date-1 Bill URL-2
Date-1 George URL-5
Date-1 Nick URL-5
Date-1 Eve URL-3
Date-1 Eve URL-5

等等,可以有成百上千的条目
当我说 URL-1 时,我的意思是该站点的有效 URL,因此 John 和 Eve 中的 URL-1 实际上意味着他们都访问了同一个链接。在此示例中,URL-2,URL-3,URL-5 是最大的常见访问 URL 序列。

问题:我有兴趣使用此信息并找到所有用户在日志文件涵盖的整个日期时间范围内和/或特定日期访问的最频繁访问的 URL 序列-时间。
我对如何去做这个有一些初步的想法。例如。我的第一个想法是将所有内容存储在 HashMaps 中,并为每次出现包含计数器,然后遍历映射条目以找到最大值,但在我看来,它在空间和运行时都有巨大的开销。
此外,我越想越觉得它可能有一个“标准”解决方案,例如字符串模式匹配将遵循 KMP 算法
然后我想我是否可以使用例如后缀树,但我只知道实现一个特里树,我相信它的空间复杂度是 O(N^2)。我知道有压缩版本,但我认为它们太复杂了,如果有更好/标准的解决方案来解决这个问题,我不想浪费时间。

非常感谢任何建议/意见。

最佳答案

好吧,你说过,非常感谢任何建议/意见。。因此,让我建议您简要遵循以下算法:

  1. 根据需要的日期范围过滤日志文件,在一些 List 中收集每个用户的 URL 序列。

  2. 在第 1 步之后,您有一组大序列。在这一步中,这个问题相当于 find most common substring in list of strings 的任务。 .这是已经解决的问题。

UPD:之后,将每个 URL 视为一些 “string” 中的 “char”

关于java - 最常访问的最大 URL 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14284420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com