2010-06-22 22 views
6

estoy usando SQL Server 2008 y si realizo la siguiente consulta:FREETEXTTABLE siempre tiene un rango de 0

SELECT 
    * 
FROM 
    FREETEXTTABLE(SomeTable, Name, 'a name that I know exists') 

Puedo obtener las filas más atrás que yo esperaría, pero el rango es siempre 0.

la búsqueda de una solución a este problema, I found this question en el foro de Microsoft ASP.NET, y por supuesto si añado:

ALTER FULLTEXT CATALOG MyCatalog REBUILD 

comienzo a una parada - pero sólo temporalmente.

No quiero tener que reconstruir mi catálogo cada vez que realizo una búsqueda, especialmente cuando tengo muchos datos en mi base de datos y si los agrego a mi Sproc directamente antes de la consulta, mi consulta no arroja resultados de todos modos , presumiblemente porque el catálogo ha terminado de reconstruirse. Parece que hay otras personas que tienen este y otros problemas similares, pero no he podido encontrar una solución. ¿Algunas ideas?

Respuesta

3

Estoy corriendo en el mismo problema, y ​​currently accepted answer no es una solución para mí.

Sí, la clasificación se hace como dice esta respuesta, pero no es motivo para tener resultados incoherentes cuando ha habido algunas veces desde la última reconstrucción del catálogo. La clasificación no debería cambiar drásticamente después de la reconstrucción e incluso algunos minutos después de la reconstrucción ...

Para mí, hay un error en el ranking freetexttable. (Bug que no afecta containstable clasificación: He comprobado yo mismo con mi propio catálogo con errores, y también está escrito en this Microsoft forum post.)

De this other Microsoft forum post Parece que este error se produce sólo en el catálogo que tiene solamente muy pocas filas indexadas. Agregar datos al catálogo hace que el error desaparezca.

Así que aquí está mi respuesta, tomada de Pavel Valenta on yet another Microsoft forum post:

Si su catálogo real no va a tener más de unos pocos cientos de filas indexadas, añadir un poco de tabla ficticia a su catálogo con el fin de tener más filas indexadas.

Esto no contaminará sus resultados debido a la forma en que se construyen las consultas. Sí, esto parece una solución bastante extraña. Pero ese es el único que me solucionó el problema.

Una nota final: tuve este problema con sql 2005 sp4, no probado con 2008. (La pregunta es para 2008.)

Cuestiones relacionadas