sql-server-2008 - texto - install full text search sql server 2017
SQL 2008: Desactivar palabras vacías para la consulta de búsqueda de texto completo (3)
Estoy teniendo un poco de dificultad para encontrar una buena solución para esto:
Digamos que tengo una tabla de "Compañía", con una columna llamada "Nombre". Tengo un catálogo de texto completo en esta columna. Si un usuario buscara "Compañía muy buena", mi consulta sería:
SELECT
*
FROM
Company
WHERE
CONTAINS(Name, ''"Very" AND "Good" AND "Company"'')
El problema está en este ejemplo, la palabra "Muy" aparece en la lista estándar de palabras clave:
SELECT
ssw.*
FROM
sys.fulltext_system_stopwords ssw
WHERE
ssw.language_id = 1033;
El resultado es que la consulta vuelve sin filas, aunque existe una fila con el nombre "Compañía muy buena".
Mi pregunta es, ¿cómo puedo hacer para desactivar las palabras clave para mi consulta? ¿O cómo voy a eliminarlos por completo?
¿O hay otra forma en la que debería estar haciendo esta búsqueda?
De forma predeterminada en SQL Server, las palabras de parada no se ignoran.
Esto es lo que quieres hacer:
sp_configure ''show advanced options'', 1;
RECONFIGURE;
GO
sp_configure ''transform noise words'', 1;
RECONFIGURE;
GO
REF: http://msdn.microsoft.com/en-us/library/ms187914%28v=sql.100%29.aspx
En caso de que alguien más se tropiece con este problema:
Parece que hay una opción para hacer esto en 2008; No me pareció evidente porque la base de datos se actualizó desde 2005, donde no creo que esta sea una opción.
Lo primero que debe hacer es establecer el nivel de compatibilidad hasta 2008:
ALTER DATABASE [MyDatabase] SET COMPATIBILITY_LEVEL = 100
Luego, al crear el índice de texto completo a través del asistente, hay un paso que le permite ignorar las palabras clave para el índice.
Edición: Aquí está el script para hacerlo también:
ALTER FULLTEXT INDEX ON MyTable SET STOPLIST = OFF
Tuve este problema hoy temprano con la búsqueda de texto completo.
151-663049 - returns result
151-66304 - no result
151-6630 - no result
151-663 - no result
151-66 - no result
151-6 - returns result
151 - returns result
151 returns result
Pero leí una publicación que dice cómo solucionar el problema para agregar un * al final de cada búsqueda. http://social.msdn.microsoft.com/Forums/sqlserver/en-US/fae33a6b-7c7c-4c11-842c-ca5277ed824f/ms-sql-server-2008-r2-fulltext-search-problem
151-663049* - returns result
151-66304* - returns result
151-6630* - returns result
151-663* - returns result
151-66* - returns result
151-6* - returns result
151-* - returns result
151* - returns result
Así que en su parámetro simplemente agregue * a sus búsquedas y resuelva el problema.