your full examples enable ejemplos sql-server-2005 search pdf indexing full-text-search

sql-server-2005 - full - sql contains



Uso de búsqueda de texto completo con archivos PDF en SQL Server 2005 (2)

Tengo un problema extraño con la indexación de archivos PDF en SQL Server 2005, y espero que alguien pueda ayudar. Mi base de datos tiene una tabla llamada MediaFile con los siguientes campos: MediaFileId int identity pk, FileContent image y FileExtension varchar (5). Tengo mi aplicación web almacenando el contenido del archivo en esta tabla sin problemas, y puedo usar la búsqueda de texto completo en doc, xls, etc. sin problemas. La única extensión de archivo que no funciona es PDF. Al realizar búsquedas de texto completo en esta tabla para palabras que sé que existen dentro de los archivos PDF guardados en la tabla, estos archivos no se devuelven en los resultados de búsqueda.

El sistema operativo es Windows Server 2003 SP2 y he instalado Adobe iFilter 6.0 . Siguiendo las instrucciones en esta entrada de blog , ejecuté los siguientes comandos:

exec sp_fulltext_service ''load_os_resources'', 1; exec sp_fulltext_service ''verify_signature'', 0;

Después de esto, reinicié el Servidor SQL y verifiqué que el iFilter para las extensiones PDF se instaló correctamente ejecutando el siguiente comando:

select document_type, path from sys.fulltext_document_types where document_type = ''.pdf''

Esto devuelve la siguiente información, que se ve correcta:

document_type: .pdf
ruta de acceso: C: / Archivos de programa / Adobe / PDF IFilter 6.0 / PDFFILT.dll

Luego, (re) creé el índice en la tabla MediaFile, seleccionando FileContent como columna para indexar y FileExtension como su tipo. El asistente crea el índice y completa con éxito. Para probar, estoy realizando una búsqueda como esta:

SELECT MediaFileId, FileExtension FROM MediaFile WHERE CONTAINS(*, ''"house"'');

Esto devuelve archivos DOC que contienen este término, pero no ningún archivo PDF, aunque sé que definitivamente hay archivos PDF en la tabla que contienen la palabra casa .

Dicho sea de paso, lo hice funcionar una vez durante unos minutos, donde la búsqueda anterior arrojó los archivos PDF correctos, pero luego simplemente dejó de funcionar sin motivo aparente.

¿Alguna idea sobre qué podría impedir que SQL Server 2005 indexe los PDF, a pesar de que Adobe iFilter está instalado y parece estar cargado?


Gracias Ivan. Logramos que esto funcione al comenzar todo desde cero. Parece que el orden en que se hacen las cosas hace una gran diferencia, y los consejos dados en el blog vinculado para desactivar la configuración ''load_os_resources'' después de cargar el iFilter probablemente no sean la mejor opción, ya que esto provocará que iFilter para que no se cargue cuando se reinicie SQL Server.

Si recuerdo correctamente, la secuencia de pasos que finalmente funcionó para mí fue la siguiente:

  1. Asegúrese de que la tabla ya no tenga un índice (y de ser así, elimínelo)
  2. Instalar Adobe iFilter
  3. Ejecute el comando exec sp_fulltext_service ''load_os_resources'', 1;
  4. Ejecute el comando exec sp_fulltext_service ''verify_signature'', 0;
  5. Reiniciar SQL Server
  6. Verificar que el PDF iFilter esté instalado
  7. Crear índice de texto completo en la tabla
  8. Hacer un nuevo índice completo

Aunque esto funcionó, estoy bastante seguro de que realicé estos pasos varias veces antes de que finalmente comenzara a funcionar correctamente.


He luchado con eso durante una hora, pero finalmente lo he conseguido. Hice todo lo que hice, así que intente simplificar la consulta (reemplacé * con el nombre del campo y quité las comillas dobles en el término):

SELECT MediaFileId, FileExtension FROM MediaFile WHERE CONTAINS(FileContent, ''house'')

Además, cuando crea un índice de texto completo, asegúrese de especificar el idioma. Y lo último es que quizás puedas intentar cambiar el tipo de campo de Image a varbinary(MAX) .