Adding another answer in response to your comment.
So if you want to find out if users have had a conversation you might do:
MATCH (source_tweet:Tweet)<-[:REPLY_TO]-(reply_tweet:Tweet)
MATCH
(source_user:User {userId: source_tweet.user}),
(reply_user:User {userId: reply_tweet.user})
CREATE UNIQUE reply_user-[:REPLIED_TO]->(source_user)
Then you could do:
MATCH (user1)-[:REPLIED_TO]-(user2)
WHERE ID(user1) < ID(user2)
RETURN user1.userId, user2.user_id
... to get all of the combinations.
Though like I said, you should really have relationships between the tweets and users indicating which user made the tweet. If you had that the query might be like:
MATCH (source_user:User)-[:WROTE]->(source_tweet:Tweet)<-[:REPLY_TO]-(reply_tweet:Tweet)<-[:WROTE]-(reply_user:User)
CREATE reply_user-[:REPLIED_TO]->(source_user)
And that should also be much faster because you're doing relationship traversals rather than looking up in the userId
index.