Siempre me pregunté cómo hacen esas cosas de manera eficiente... porque la manera que se me ocurre de hacerlo, no creo que lo sea. Sería ésta:
1- Al contenido del campo texto_completo hacerle un split por el espacio para separarlo en palabras dentro de un array.
2- Traer el contenido de todo el diccionario a un array
3- Por cada elemento del priemr array (por cada palabra) recorrer el segundo array (el diccionario) para ver si hay coincidencias... si las hay, se crea el "info tip" (la descripcón de esa palabra) y si no hay conicidencias no se crea.
Pero... yo lo veo muy pero muy ineficiente. Imaginá un texto con, digamos, 2000 palabras y unas 500 definiciones en el diccionario. Por cada palabra hay que recorrer un array de 500 elementos... lo que daría un total de ¡¡¡1.000.000 de comprobaciones!!! (si no estoy errado

)
A mi también me gustaría escuchar otras soluciones :D