La mejor manera de poner en práctica un procedimiento almacenado con búsqueda de texto completo
-
22-08-2019 - |
Pregunta
Me gustaría realizar una búsqueda con el motor de texto completo MSSQL donde da la siguiente entrada del usuario: "Cuadrado Hollywood"
quiero que los resultados tengan tanto en Hollywood como cuadrado [s] en ellos.
puedo crear un método en el servidor web (C #, ASP.NET) para producir dinámicamente una sentencia SQL como esto:
SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,'"hollywood*"')
AND CONTAINS(TITLE, '"square*"')
Es bastante fácil. Sin embargo, me gustaría que esta en un procedimiento almacenado para el beneficio mayor velocidad y seguridad para añadir parámetros.
¿Puedo tener mi pastel y comérselo también?
Solución
yo estaba de acuerdo con la anterior, mira en cláusulas AND
SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,'"hollywood*" AND "square*"')
Sin embargo, usted no debería tener que dividir las frases de entrada, puede utilizar la variable
SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,@parameter)
por cierto buscar el término exacto (contiene) buscar cualquier término en la frase (texto libre)
Otros consejos
La última vez que tuve que hacer esto (con MSSQL Server 2005) que terminó en movimiento toda la funcionalidad de búsqueda a Lucene (la versión Java, aunque ahora existe Lucene.Net creo). Tenía grandes esperanzas de la búsqueda de texto completo, pero este problema específico me molestó tanto me di por vencido.
¿Ha intentado utilizar el operador lógico en la cadena? Yo paso en una cadena de texto a mi sproc y esas cosas 'Y' entre las palabras.