I was doing what DoberLuv advised. I was a bad trainer and beginner but I did not wait for too long until 99 have a pretty reliable recall. I can recall him him by calling his name while he is playing with strangers, nosing something new on ground, or even playing with another dog!!! Or at least everytime he comes back in less than 5 sec. I always feed him a kibble when he comes.
When we walk, I always walk in a distance (gradually increase) with my gf. Then he will keep coming to me and then my gf many times non-stop!!! We can practise recall in that way for more than 30 times in a walk. He can do a very good "heel" with excellent attention when I am holding a kibble. He even ignores a dog walk nearby : ) Just be patient.
As other professionals advised, never end the fun or blame him after calling "come" or his name. Making coming back to you mean fun/ food.
Remember to use leash unless it is 100***37; safe. We did have a dangerous momenet before. After he went to my gf, I tried to hide myself and wait for him to find me. Then he saw a man looked like me on the other side of the road and he went straight across the road. Lucky that we could recall him back immediately.