Pregunta

Me pregunto si los principales motores SQL por ahí (MS SQL, Oracle, MySQL) tiene la capacidad de entender que 2 palabras están relacionadas, ya que comparten la misma raíz.

Sé que es fácil para que coincida con "redes" en la búsqueda de la "red" porque esta última es una subcadena de la primera.

Pero hacer motores SQL tienen funciones que pueden coincidir "red" en la búsqueda de "networking"?

Muchas gracias.

¿Fue útil?

Solución

Esta funcionalidad se llama despalilladora : un algoritmo que puede deducir un vástago de cualquier forma de la palabra.

Esto puede ser bastante complejo: por ejemplo, palabras rusas шёл y иду son diferentes formas del mismo verbo, aunque no tienen una sola letra común (irónicamente, esto también es cierto para Inglés: went y go).

La separación de palabras también puede ser una tarea compleja para algunos idiomas que utilizan sin espacios entre las palabras.

SQL Server permite el uso de lematizadores enchufables y separadores de palabras para su motor de búsqueda de texto completo:

http://msdn.microsoft.com/en-us/library/ ms142509.aspx

Otros consejos

Creo que el tema es 'Semántica Similitud'. Hay varios esfuerzos que tratan de encontrar soluciones óptimas a este problema.

Puede intentar usar soundex, aunque puede que no sea exactamente lo que quiere. Ver http://www.codeproject.com/KB/database/Phonetic_Search_MSSQL.aspx.

Como Quassnoi señaló, esto se puede hacer con derivada . PostgreSQL implementa para búsqueda de texto completo si lo enciende.

ALTER TEXT SEARCH CONFIGURATION blah_en ADD MAPPING FOR english_stem;

Se utiliza el bola de nieve diccionario , que se basa en la Stemmer Porter . La despalilladora Porter es probablemente uno de los analizadores lingüísticos más utilizados, lo que le dará resultados aceptables. Es importante recordar, sin embargo, que deriva no siempre es tan preciso como le gustaría.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top