2009-08-12 11 views
5

¿Es posible obtener la lista de palabras de ruido de búsqueda/texto completo de SQL Server 2005 consultando la base de datos?Query SQl Server 2005 Búsqueda de texto completo noise/stop words

Soy consciente de que las palabras irrelevantes están en un archivo de texto ~/FTData/noiseEng.txt pero este archivo no es accesible para nuestra aplicación.

He mirado las tablas sys.fulltext_ * pero estas no parecen tener las palabras.

Respuesta

2

Parece que esto no es posible en SQL 2005, pero es en SQL Server 2008.

Advanced Queries for Using SQL Server 2008 Full Text Search StopWords/StopLists

Esta consulta siguiente obtiene una lista de todos los palabras vacías que se incluyen con SQL Servidor 2008. este es un buen mejora, no se puede hacer esto en SQL Server 2005.

Stopwords and Stoplists - SQL Server 2008

SQL Server 2005 palabras irrelevantes han sido sustituidos por palabras vacías. Cuando una base de datos se actualiza a SQL Server 2008 desde una versión anterior , los archivos de palabras irrelevantes ya no se utilizan en SQL Server 2008. Sin embargo, los archivos de palabras irrelevantes son almacenado en la carpeta FTDATA \ FTNoiseThesaurusBak, y usted puede usarlos más tarde al actualizar o construyendo las listas de detención correspondientes de SQL Server 2008. Para obtener información acerca de actualizar archivos de palabras irrelevantes a listas de finalización, consulte la Búsqueda de texto completo Actualizar.

0

Acabo de copiar el archivo de palabras irrelevantes de \Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData en mi aplicación, y lo uso para quitar palabras de ruido.

Public Function StripNoiseWords(ByVal s As String) As String 
     Dim NoiseWords As String = ReadFile("/Standard/Core/Config/noiseENU.txt").Trim 
     Dim NoiseWordsRegex As String = Regex.Replace(NoiseWords, "\s+", "|") ' about|after|all|also etc. 
     NoiseWordsRegex = String.Format("\s?\b(?:{0})\b\s?", NoiseWordsRegex) 
     Dim Result As String = Regex.Replace(s, NoiseWordsRegex, " ", RegexOptions.IgnoreCase) ' replace each noise word with a space 
     Result = Regex.Replace(Result, "\s+", " ") ' eliminate any multiple spaces 
     Return Result 
    End Function 
+0

Hola Herb, esto podría funcionar, pero nuestra aplicación se ejecuta en los servidores de los clientes que normalmente están bloqueados por lo que el acceso al archivo está restringido. Hacer que los clientes copien y peguen las palabras irrelevantes no habría sido desafortunadamente una solución aceptable –

Cuestiones relacionadas