2010-01-12 10 views
8

Estoy trabajando en un proyecto de base de conocimiento utilizando SQL Server 2008 Full Text Search Engine. Proyecto incluido en artículos y archivos donde cada artículo tiene múltiples archivos. En esos artículos todo el contenido es html puro.Cómo ignorar las etiquetas html en Sql Server 2008 Búsqueda de texto completo

En este momento, he creado con éxito el catálogo de texto completo y el índice en SQL Server 2008 y mi base de datos es compatible con la versión 10.

Aquí están mis preguntas:

1) ¿Es posible ignorar las etiquetas HTML, los textos que contienen más claramente en "< ...>", mientras que la búsqueda en estos artículos, porque si quiero buscar div , tabla, etc. no debería haber resultado devuelto?

2) Los artículos se actualizarán en cualquier momento, por lo que el índice de texto completo se debe actualizar cuando se inserte un nuevo registro. ¿Es suficiente establecer solo "PISTA DE CAMBIOS AUTOMÁTICA" al crear un catálogo de texto completo?

3) Podemos usar la característica FILESTREAM de aquí en adelante, ¿SQL Server 2008 tiene un buen rendimiento en archivos que usan el índice de texto completo? ¿Qué tipos de documentos específicos tiene SQL Server 2008 para indexar?

Saludos

+0

amigo Hola, Creo que la mejor solución es reemplazar HTML con expresiones regulares '<(.|\n)*?>' con un cheque ensamblado de SQL CLR este enlace http://justgeeks.blogspot.com/2008/08/adding-regular-expressions-regex-to-sql.html –

Respuesta

-1

solicitar estas:

1) En el texto de SQL Server, podemos definir las palabras irrelevantes/palabras vacías. Puede editar el archivo Noise world y luego debe reconstruir el catálogo. Entonces puedes poner todas las etiquetas html como ruido. Por favor, compruebe

http://msdn.microsoft.com/en-us/library/ms142551.aspx

2) Con seguimiento de los cambios que incluye automáticamente los cambios en la búsqueda de texto completo actual, pero la clasificación de estos artículos recién agregado se cambia de la anterior. Entonces, hasta que el índice maestro esté sincronizado, a menos que lo haga, se abandonará y disminuirá con el ranking.

3) Por lo que sé, podemos implementar filtros personalizados, lematizadores y separadores de palabras y podemos conectarnos a la búsqueda de texto completo de SQL Server. De manera predeterminada, puede que no conozca la lista completa, pero sí doc y pdf.

Para obtener más información sobre la búsqueda de texto completo de SQL Server 2008 compruebe:

http://technet.microsoft.com/en-us/library/cc721269.aspx

+1

Las palabras prohibidas no deben filtrar las etiquetas html. Si hay un texto como "

"¿Qué voy a dar como una palabra de paso para filtrarlo como" formulario "," ", etc.? – Myra

+0

Pensé que desea ignorar las etiquetas html básicas. Para esta situación, me gustaría recomendar la implementación de Custom Word Breaker y Stemmer al implementar IWordBreaker, IStemmer y, si es necesario, las interfaces IFilter y luego conectarlas a su servidor sql. –

+0

¿Podría dar un ejemplo de implementación de estas interfaces que mencionó? – Myra

26

hay un filtro para .htm y .html.

para ver si tiene el filtro instalado plazo esto sql:

SELECT * FROM sys.fulltext_document_types 

que debes ver:

.htm E0CA5340-4534-11CF-B952-00AA0051FE20 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\nlhtml.dll 12.0.6828.0 Microsoft Corporation 

.html E0CA5340-4534-11CF-B952-00AA0051FE20 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\nlhtml.dll 12.0.6828.0 Microsoft Corporation 

lo tanto, si usted puede convertir su columna de artículos a varbinary (max), entonces puede agregar un índice de texto completo y especificar un tipo de documento de '.html'

una vez que el índice ha poblada, puede comprobar las palabras clave que utiliza este SQL:

SELECT display_term, column_id, document_count 
FROM sys.dm_fts_index_keywords 
(DB_ID('your_db'), OBJECT_ID('your_table')) 
+0

Tu primer voto de mi parte :) – Myra

+0

Parece que no puedo agregar un índice de texto completo en una columna varbinary (max). Tampoco puedo encontrar la forma de especificar el tipo de documento (si configuro esto como texto) – Radderz

+0

Parece que SQL Management Studio está un poco restringido. El índice de texto completo se puede crear como una declaración SQL simple en su lugar, y las columnas calculadas son muy útiles en este proceso; vea el punto 2 de la respuesta aceptada aquí: https://stackoverflow.com/questions/17179772/getting-top-n-latest-entries-from-sql-server-full-text-index – Radderz

Cuestiones relacionadas