he construido una consulta T-SQL como esto:Las preocupaciones sobre SQL Server 2008 Texto completo Búsqueda
DECLARE @search nvarchar(1000) = 'FORMSOF(INFLECTIONAL,hills) AND FORMSOF(INFLECTIONAL,print) AND FORMSOF(INFLECTIONAL,emergency)'
SELECT * FROM Tickets
WHERE ID IN (
-- unioned subqueries using CONTAINSTABLE
...
)
La interfaz gráfica de usuario para esta búsqueda serán una página aspx con un único cuadro de texto donde el usuario puede buscar.
Planeo construir de alguna manera el término de búsqueda para que sea como el ejemplo anterior (@search).
tengo algunas preocupaciones, sin embargo:
- es el ejemplo término de búsqueda por encima de la mejor o la única manera de incluir las inflexiones de todas las palabras en la búsqueda?
- Debo separar las palabras y construir el término de búsqueda en C# o T-SQL. Tiendo a inclinarme hacia C# para decisiones/bucle/construcción, pero quiero tu opinión.
- Odio construir SQL dinámicamente debido al riesgo de inyección. ¿Cómo puedo protegerme de esto?
- ¿Debo usar FREETEXTTABLE en su lugar? ¿Hay alguna manera de hacer que FREETEXT busque TODAS las palabras en lugar de CUALQUIER?
- En general, ¿de qué otro modo haría esto?