Búsqueda de texto completo: sin detener las palabras vacías

Creé un índice de texto completo usando el asistente de texto completo de SQL Server, pero cuando paso un término de búsqueda, no ignora las palabras vacías.

es decir, esto devuelve filas:

SELECT *
FROM dbo.T_Restaurant AS Restaurant
JOIN dbo.SearchView AS SearchView ON SearchView.id = Restaurant.id
WHERE CONTAINS(SearchView.TotalSearchField, ' indian & bridgwater ')

Pero esto no:

SELECT *
FROM dbo.T_Restaurant AS Restaurant
JOIN dbo.SearchView AS SearchView ON SearchView.id = Restaurant.id
WHERE CONTAINS(SearchView.TotalSearchField, ' indian & in & bridgwater ')

Sé que "in" es una palabra no incluida en el idioma inglés y, sin embargo, no parece ignorarse. El índice utiliza la lista de palabras irrelevantes del sistema según sus propiedades. ¿Me he perdido un paso para configurar la lista de palabras vacías?

Muchas gracias,

Chris.

preguntado el 08 de enero de 11 a las 16:01

1 Respuestas

¿Funciona mejor esta sintaxis de FTS? Creo que habrá necesitado indian & bridgewater para ser una frase en lugar de buscar las palabras, que es lo que creo que estás tratando de hacer.

SELECT *
FROM dbo.T_Restaurant AS Restaurant
JOIN dbo.SearchView AS SearchView ON SearchView.id = Restaurant.id
WHERE CONTAINS(SearchView.TotalSearchField, '"indian" AND "bridgwater"')

SELECT *
FROM dbo.T_Restaurant AS Restaurant
JOIN dbo.SearchView AS SearchView ON SearchView.id = Restaurant.id
WHERE CONTAINS(SearchView.TotalSearchField, '"indian" AND "IN" AND "bridgwater"')

Respondido el 09 de enero de 11 a las 03:01

:( Lamentablemente, eso tampoco funciona. Sin embargo, gracias por tu aporte, te lo agradezco mucho. Chris Chambers

No puedo ingresar al servidor SQL hasta la mañana; ¿Qué hace este retorno select * from sys.dm_fts_parser ('“indian & in & bridgewater”', 1033, 77,0) Debería mostrar las palabras irrelevantes que van en su idioma, asumiendo que 1033 es su página de códigos. Puede comprobarlo seleccionando [nombre], alias, lcid de master.sys.syslanguages; - u07ch

Gracias por tu ayuda hasta ahora amigo, realmente aprecio tu tiempo. He ejecutado la consulta que sugirió (con una edición para StopListID vinculado a mi índice) y esto es lo que obtengo (eliminé algunas columnas impares): 1 Exact Match indio 2 Noise Word en 3 Exact Match bridgwater Crazy, obviamente está siendo reconocida como una palabra irrelevante y, sin embargo, cuando consulto la base de datos con la palabra irrelevante, no devuelve filas. Grrr! - Chris Chambers

El último recurso es verificar el índice directamente usando los dmv. No recuerdo la sintaxis, pero compruebe technet.microsoft.com/en-us/library/cc280607.aspx puede comprobar fila por fila para ver qué hay en el índice. - u07ch

Puedo ver todas las palabras indexadas y ninguna de las palabras vacías está en la lista (presumiblemente porque el proceso de población las elimina). Mañana investigaré un poco más en línea, ya que probablemente no tenga tiempo hoy. Muchas gracias de nuevo, su aportación ha sido muy valorada. Es muy difícil llegar al fondo de este tipo de problema complicado y es bueno obtener la opinión de otra persona. - Chris Chambers

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.