There is a simple relationship between the two problems, but it only goes on one side: if you can analyze, then you can recognize. Indeed, if you run the analyzer and it generates a failure, the input is not in the language; if the analyzer produces an analysis tree, the entry is in the language.
Note, however, that an analyzer and an identifier not only solve different problems, but also receive different specifications. An identifier receives a language in abstract form. On the other hand, an analyzer receives a grammar, which not only implicitly defines a language, but also instructs the analyzer how to convert a valid entry into an analysis tree. Since the same language can have many equivalent grammars, it is unclear what it even means to convert an identifier to an analyzer – which grammar should the analyzer use?
Why are recognition software interesting, then? Precisely because of the one-sided connection, which states that an analyzer can be converted to an identifier. This relationship implies that if your language is difficult to recognize, you will not be able to analyze it (using a certain class of algorithms).