Почему некоторые твиты находятся в API поиска, а не в API стриминга и наоборот

У меня есть скрипт, который сохраняет входящие твиты для фразы (например, «python») в таблицу базы данных «A», используя twitter потоковое API. Позже другой скрипт ищет ту же фразу, используя API поиска в Twitter, и сохраняет результаты в таблице "B". ". Мой вопрос в том, почему в «А» есть твиты, которых нет в «Б», и наоборот.

Я могу придумать одну причину, по которой твиты должны быть в «Б», а не в «А»:

«A» содержит только твиты, опубликованные после запуска API потоковой передачи, в то время как API поиска возвращает результаты за последнюю неделю. Если потоковое API работает более недели, то в «B» не должно быть ни одного твита, которого нет в «A».

Я знаю две причины, по которым некоторые твиты должны быть в «А», а не в «Б»:

  1. поисковый API возвращает только результаты за последнюю неделю, в то время как потоковый API возвращает все
  2. поисковый API возвращает только часть результатов, а не все, поскольку его внимание не сосредоточено на полноте.

Я хотел бы убедиться, правильно ли я понял или нет.


person PHA    schedule 21.09.2015    source источник


Ответы (1)


Для «Б», а не для «А», вы правы. Важным признаком этого является ссылка API поиска, которую вы включили:

Он позволяет запрашивать индексы последних или популярных твитов...

Что касается «А», а не «Б», вы тоже правы, но с небольшими ошибками.

  1. Streaming API не будет возвращать все, он будет возвращать только 1% от общего числа твитов. Фильтр 1% выполняется внутри Twitter, и не было никаких указаний на то, как это делается. Недавно было объявление об исправлении 1%, чтобы сделать истинный 1%, но я не могу найти ссылку, где я это читал.
  2. With the Streaming API you're also impaired by (more commonly):
    • Public stream limit (reaching 1%)
    • Предупреждения о стойке (предупреждение)

Несколько других в зависимости от вашего использования https://dev.twitter.com/streaming/overview/messages-types

person Leb    schedule 21.09.2015
comment
@PHA, я считаю, что вы можете получить 100% от 1%, но этого можно достичь, только если у вас вообще нет фильтра. Поскольку Twitter получает около 500 млн в день по состоянию на 2013 год, 5 млн в день — это неплохо. По моему опыту, есть пул данных, которые фильтруются Twitter и вводятся в Streaming API, к которому мы обращаемся. Это тоже не подтверждено, просто теория, основанная на моих тестах. - person Leb; 22.09.2015
comment
Итак, что вы сказали, означает, что если у меня есть поток с 10 непопулярными фразами, и я получаю один твит в минуту в этом потоке, то я все равно могу пропустить некоторые твиты для этих 10 фраз? - person PHA; 22.09.2015
comment
Я буду тестировать этот сценарий в ближайшее время. Мои предыдущие попытки показали мне, что с 4 подключениями (максимальное, что мне позволял твиттер) все они приводили к одним и тем же данным. Каждое соединение собирало одну и ту же информацию, и я предполагал проверить, увеличит ли количество полученных данных наличие нескольких соединений, но это определенно не так. Я буду держать вас в курсе, если вам интересно. - person Leb; 22.09.2015
comment
Звучит хорошо, что ваш тест был успешным, так что, по крайней мере, он последователен, но еще более интересно узнать, действительно ли он завершен или нет для фраз с меньшим количеством твитов. Я буду очень признателен, если вы будете держать меня в курсе. - person PHA; 22.09.2015
comment
Я буду держать вас в курсе дальнейших исследований. Чтобы действительно проверить полноту, это должно быть сделано против пожарного шланга. Только тогда это будет подтверждено. - person Leb; 22.09.2015