2016-08-25 5 views
0

У меня есть проблемы с поиском:Почему reddit cloudsearch возвращает неверные результаты поиска по меткам?

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

Он получает ~ 1000 новые материалы, полученные от метки времени ts1 (в моем случае время создания subreddit) в ts2

Что мой сценарий делает:

  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)) 

ответ

1

Для CloudSearch, насколько я понимаю, вы не должны использовать created_utc.

Если вы меняете submission.created_utc на номер submission.created, вы получите именно то, что вам нужно.

Это связано с облачным поиском, использующим эпохальное время напрямую. Нет необходимости конвертировать его в UTC или GMT, и это будет иметь разные эффекты в зависимости от вашего часового пояса.

Смежные вопросы