найти результат из типа .doc, который хранится в столбце varbinary(max)
-
21-09-2019 - |
Вопрос
я хочу написать запрос с полнотекстовым поиском в столбце с типом varbinary(max), в котором хранится файл .doc/.docx(MS-Word).мой запрос должен возвращать записи, содержащие слово в сохраненном файле.
Это возможно?
если да, то как? (пожалуйста, напишите пример)
если да, можем ли мы написать это для другого языка (например, арабского, персидского или символов UniCode)?
заранее спасибо.
Решение
Вам нужна полнотекстовая индексация, которая была значительно улучшена в SQL Server 2008.
Для ознакомления я бы рекомендовал прочитать эти статьи здесь:
- SQL Server 2008 — создание полнотекстового каталога и поиска
- Понимание полнотекстового индексирования в SQL Server
- Инструментальная среда полнотекстового индексирования
Как только вы поймете это и создадите свой собственный полнотекстовый каталог, вы сможете искать что-то вроде этого:
SELECT ID, (other fields), DocumentColumn
FROM dbo.YourTable
WHERE CONTAINS(*, 'Microsoft Word')
И да, полнотекстовое индексирование и поиск поддерживают множество языков — для получения подробной информации ознакомьтесь с ссылками, которые я вам отправил, и в электронной документации по SQL Server 2008!
Марк
Другие советы
Если у вас SQL Server 2005 или более поздняя версия, да, вам просто нужны фильтры:
Если у вас SQL Server 2000, файлы документов можно индексировать, но, насколько мне известно, новый формат Office 2007 — нет (я слышал, что вы можете позаимствовать IFilter, установив Word 2007 на сервер).