2008-11-07 23 views
7

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.Uso de búsqueda de texto completo con archivos PDF en SQL Server 2005

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

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

Después de esto, me reinicia el servidor SQL Server, y verificado que el iFilter para las extensiones PDF se ha instalado correctamente ejecutando el siguiente comando:

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

Esto devuelve la información siguiente, que parece correcto:

DOCUMENT_TYPE: .pdf
ruta: C : \ Archivos de programa \ Adobe \ PDF IFilter 6.0 \ Pdffilt.dll

Entonces me (re) creado el índice en la tabla MediaFile, seleccionando fileContent como la columna de índice y el FileExtension como su tipo. El asistente crea el índice y completa con éxito. Para probar, estoy realizando una búsqueda de esta manera:

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

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

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

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

Respuesta

7

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 no recuerdo mal, la secuencia de pasos que con el tiempo han trabajado para mí fue como sigue:

  1. Asegúrese de que la tabla no tiene un índice ya (y si es así, eliminarlo)
  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 PDF iFilter se instala
  7. Crear índice de texto completo en la tabla
  8. hacer completa re-índice

Aunque esto hizo el truco, estoy bastante seguro de que realizó estos pasos algunas veces antes de que finalmente comenzara a funcionar correctamente.

+0

*** MANERAS ***: 1.) verificar PDF iFilter está instalado 'programatically'? 2.) crear ** índice de texto completo ** 'programáticamente '? 3.) hacer el ** re-índice completo ** 'programáticamente '? – Kiquenet

0

He luchado con esto durante una hora, pero finalmente lo he puesto en funcionamiento. Hice todo lo que hizo, por lo que sólo tratan de simplificar la consulta (He sustituido con * nombre del campo y comillas dobles alejados de plazo):

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

también cuando se crea un índice de texto asegurarse de que especifica el idioma. Y lo último es que quizás puedas intentar cambiar el tipo de campo de Image a varbinary(MAX).

Cuestiones relacionadas