Как сохранить документы, такие как PDF, Docx, XLS в SQL Server 2008 - PullRequest
3 голосов
/ 08 января 2012

Я разрабатываю веб-приложение, которое позволяет пользователям загружать файлы, например изображения и документы.этот файл разделен на две части:

  1. двоичные файлы
  2. файлы документов

Я хочу разрешить пользователям выполнять поиск по загруженным документам.Специально используя полнотекстовый поиск.Какие типы данных я должен использовать для этих двух типов файлов?

Ответы [ 3 ]

2 голосов
/ 08 января 2012

Вы можете хранить данные в двоичном формате и использовать полнотекстовый поиск для интерпретации двоичных данных и извлечения текстовой информации: .doc, .txt, .xls, .ppt, .htm.Извлеченный текст индексируется и становится доступным для запросов (убедитесь, что вы используете ключевое слово CONTAINS).Само собой разумеется, полнотекстовый поиск должен быть включен. Не уверен, как добавление полнотекстового индекса повлияет на вашу систему - то есть, на ее размер.Вам также нужно взглянуть на план выполнения, чтобы убедиться, что индекс используется во время запроса.

Для получения дополнительной информации смотрите:

http://technet.microsoft.com/en-us/library/ms142499(SQL.90).aspx

Плюсы: Основное преимущество хранения данных в базе данных состоит в том, что она делает данные «автономными».Поскольку все данные содержатся в базе данных, резервное копирование данных, перемещение данных с одного сервера базы данных на другой, репликация базы данных и т. Д. Намного проще.

также вы можете включить управление версиями файлов, а также облегчить работу веб-ферм с балансировкой нагрузки.

Минусы: вы можете прочитать это здесь: https://dba.stackexchange.com/questions/3924/sql-server-2005-large-binary-storage. Но это то, что выдля эффективного поиска по файлам.

Или другое, что я мог бы предложить, это, вероятно, сохранить ключевые слова в базе данных и затем связать их с файлом в файловой папке.

Вот статья, в которой обсуждается использование abt с помощью FileStream и базы данных: http://blogs.msdn.com/b/manisblog/archive/2007/10/21/filestream-data-type-sql-server-2008.aspx

0 голосов
/ 08 января 2012

Полнотекстовый индекс может быть создан для столбцов, которые используют любой из следующих типов данных - CHAR, NCHAR, VARCHAR, NVARCHAR, TEXT, NTEXT, VARBINARY, VARBINARY (MAX), IMAGE и XML.

Кроме того, чтобы использовать полнотекстовый поиск, вы должны создать полнотекстовый индекс для таблицы, по которой они хотят выполнять полнотекстовые поисковые запросы.Для конкретной таблицы или индексированного представления SQL Server можно создать не более одного полнотекстового индекса.

это две статьи об этом:

SQL SERVER - 2008 - Создание полнотекстового каталога и полнотекстового поиска

Использование полнотекстового текстаПоиск в SQL Server 2008

0 голосов
/ 08 января 2012

Сначала необходимо преобразовать PDF в текст.Существуют библиотеки для такого рода вещей (например, PowerGREP).Тогда я бы порекомендовал хранить текст PDF-файлов в базе данных.Если вам нужно выполнить полнотекстовый поиск и логику, например, «в одной строке», то вам нужно будет хранить по одной записи на строку текста.Если вы просто хотите найти текст в файле, то вы можете изменить структуру вашей схемы SQL в соответствии с вашими потребностями.

Для файлов docx я бы преобразовал их в RTF и осуществлял поиск таким образом во время хранения.в SQL.

Для изображений у Microsoft есть программа Microsoft OneNote, которая выполняет оптическое распознавание символов (OCR), поэтому вы можете искать текст в изображениях.Не имеет значения, какой инструмент вы используете, просто он поддерживает OCR.

По сути, если у вас нет способа напрямую прочитать двоичный файл, вам нужно преобразовать его в текст с помощью некоторой библиотеки., а затем беспокойтесь о поиске.

...