A Survey on Cross-domain Recommendation: Taxonomies, Methods, and Future Directions