Text mining for text matching I m new in text analysis and need your advice to help medical students to write properly and correctly. The students describe sicknesses as they  observe them; however, they must use an "official sickness description". I have the data collected from the students and the correct data. Let me explain:

I have a csv table1 containing 300K rows / one column : each row is the description of health condition written by students ( they can be redundant). 

I have an other table2 containing almost 200K rows and 3 columns
Column 1: the official name of the condition ( the correct one the student should use)
Column 2: a code ( number) 
Column 3: the translation of "the official name of the condition" in another language.

The idea is to start from table1 and match each row with N official names (with their codes and translation). Let's say 5 official names ranked by distance computation.

I am confused:
Should I go for a recommendation engine or a search/rank algorithms?

What are the steps you can identify to accomplish this task?

PS: the final output might be an API where student start to write the description of the sickness and obtain a list of choices/recommendations where they can pick one. 
I hope I was clear ! Thanks
FuzzyWuzzy would be a good python library for this purpose. A code example from the GitHub readme:

&gt;&gt;&gt; choices = ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"]
&gt;&gt;&gt; process.extract("new york jets", choices, limit=2)
    [('New York Jets', 100), ('New York Giants', 78)]
&gt;&gt;&gt; process.extractOne("cowboys", choices)
    ("Dallas Cowboys", 90)


I imagine you would like to use the extract function with limit 5 with choices being set equal to all the 'official names' from your table2 csv file. 

Details on installation and use are at the link above.