A computer implemented method for generating tags to merge database tables of different databases based on column names and for cataloging relational database metadata using a probabilistic signature matching process, comprising: receiving an input name to be matched to keys in a data corpus; checking if there is an existing tag generated for the input name; ending the process if the match is found; otherwise the probabilistic signature matching process proceeds by: truncating the received input name; dividing the received truncated input name into a plurality of text segments; generating a phonetic fingerprint for the input name using a predetermined pronunciation schema, wherein the phonetic fingerprint is generated using a phonetic conversion algorithm that indexes the words according to their pronunciation; dividing the phonetic fingerprint into a plurality of text segments; identifying at least one set of matching keys by matching each of the plurality text segments of dividing the phonetic fingerprint and of dividing the received truncated input name against keys in the data corpus; analyzing the set of matching keys to construct a tag; and cataloging the metadata with the constructed tag, wherein matching of each of the text segments against keys in the data corpus further comprises: determining, for each text segment, probability for a matching key, wherein the determination is based on the contents of the data corpus and a frequency of the words and/or abbreviations appearance in the data corpus; wherein frequency denotes popularity of the words and/or abbreviations in the specific domain area, and selecting the text segment with the highest probability as the matching key, returning the matching key as an output, wherein the data corpus includes pairs of keys and values related to input names and their corresponding tags, wherein the tag is a description of the input name, wherein the received input name is a column name of one or more relational databases across multiple data sources. receiving an input name to be matched to keys in a data corpus; checking if there is an existing tag generated for the input name; ending the process if the match is found; otherwise the probabilistic signature matching process proceeds by: truncating the received input name; dividing the received truncated input name into a plurality of text segments; generating a phonetic fingerprint for the input name using a predetermined pronunciation schema, wherein the phonetic fingerprint is generated using a phonetic conversion algorithm that indexes the words according to their pronunciation; dividing the phonetic fingerprint into a plurality of text segments; identifying at least one set of matching keys by matching each of the plurality text segments of dividing the phonetic fingerprint and of dividing the received truncated input name against keys in the data corpus; analyzing the set of matching keys to construct a tag; and truncating the received input name; dividing the received truncated input name into a plurality of text segments; generating a phonetic fingerprint for the input name using a predetermined pronunciation schema, wherein the phonetic fingerprint is generated using a phonetic conversion algorithm that indexes the words according to their pronunciation; dividing the phonetic fingerprint into a plurality of text segments; identifying at least one set of matching keys by matching each of the plurality text segments of dividing the phonetic fingerprint and of dividing the received truncated input name against keys in the data corpus; analyzing the set of matching keys to construct a tag; and determining, for each text segment, probability for a matching key, wherein the determination is based on the contents of the data corpus and a frequency of the words and/or abbreviations appearance in the data corpus; wherein frequency denotes popularity of the words and/or abbreviations in the specific domain area, and selecting the text segment with the highest probability as the matching key, returning the matching key as an output, wherein the data corpus includes pairs of keys and values related to input names and their corresponding tags, wherein the tag is a description of the input name, wherein the received input name is a column name of one or more relational databases across multiple data sources.