Learning compact hashing codes with complex objectives from multiple sources for large scale similarity search