为什么 reddit cloudsearch returns 时间戳搜索的结果错误?

Why reddit cloudsearch returns wrong results with timestamp search?

我对此搜索有疑问:

list(r.search('timestamp:{}..{}'.format(ts1,ts2), sort='new', subreddit=subreddit, syntax='cloudsearch',limit=None))

从时间戳 ts1(在我的例子中是 subreddit 创建时间)到 ts2

,它获得了约 1000 个最新提交

我的脚本做的是:

  1. 获取最新提交
  2. 取第二个最新提交的创建时间并将其设置为ts2
  3. 使用新的时间戳进行搜索

如果在第一次搜索后我得到了提交 1,2,3,4,5,6,7,8,9,那么在第二次搜索后我希望得到 3,4,5,6,7,8,9,不幸的是我没有得到它们,但得到了类似 7,8,9 的东西。知道为什么吗?

下面是我的脚本和示例结果。

结果:

t3_4zh8zw, 1472107937.0
t3_4zgl1n, 1472096403.0
t3_4zgf34, 1472093883.0
t3_4zg8de, 1472091260.0
t3_4zfzun, 1472087983.0
t3_4zfysv, 1472087571.0
t3_4zf8hg, 1472077921.0
t3_4zf7g6, 1472077542.0
t3_4zf4p5, 1472076595.0
t3_4zf0d7, 1472075090.0
t3_4zeqeg, 1472071708.0
t3_4zeomz, 1472071134.0
t3_4zebse, 1472066994.0
t3_4zduso, 1472061376.0
t3_4zdtne, 1472061014.0
#######################
t3_4zebse, 1472066994.0
t3_4zduso, 1472061376.0
t3_4zdtne, 1472061014.0
t3_4zdipi, 1472057168.0
t3_4zdfj3, 1472056078.0
t3_4zd4v3, 1472052437.0
t3_4zd0l5, 1472051081.0
t3_4zctiu, 1472048701.0
t3_4zazqj, 1472016633.0
t3_4zawm3, 1472015079.0
t3_4zavyc, 1472014757.0
t3_4za5hb, 1472003960.0
t3_4z9ydt, 1472001398.0
t3_4z9xhx, 1472001065.0
t3_4z9ufa, 1471999935.0

脚本:

import praw
import time

user_agent = 'clodsearch-timestamp test'
r = praw.Reddit(user_agent=user_agent)

subreddit = r.get_subreddit('laptops')

ts1 = int(subreddit.created_utc)-1
ts2 = int(time.time())

submissions = list(r.search('timestamp:{}..{}'.format(ts1,ts2), sort='new', subreddit=subreddit, syntax='cloudsearch',limit=None) )

for submission in submissions[:15]:
    print("{}, {}".format(submission.fullname, submission.created_utc))

ts2 = int(submissions[1].created_utc) - 1

print('#######################')

submissions = list(r.search('timestamp:{}..{}'.format(ts1,ts2), sort='new', subreddit=subreddit, syntax='cloudsearch',limit=None) )

for submission in submissions[:15]:
    print("{}, {}".format(submission.fullname, submission.created_utc))

据我所知,对于云搜索,您不应该使用 created_utc

如果您将 submission.created_utc 更改为仅 submission.created,您将获得所需的行为。

这是因为cloudsearch直接使用了epochtime。无需将其转换为 UTC 或 GMT,根据您所在的时区,这样做会产生不同的效果。