2014-10-20 7 views
2

У меня есть моя база данных, работающая на SQL Server 2012. Один столбец моей таблицы содержит текст RTF. Тип данных столбца - nvarchar (MAX).SQL Server 2012 Полнотекстовый поиск по RTF

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

Как я понимаю, разбор rtf должен быть уже частью SQL Server. Но я не получить работу :-(

я следующее:

  • Создать полный текст каталога
  • Выберите столбец, содержащий РТФ и добавьте full_text индекс

Но Я все еще ошибаюсь.

SELECT * FROM myTable WHERE 
CONTAINS(myRtfColumn,'rtf') 

-> все равно получить все столбцы, так как 'rtf' - это ключевое слово

Любые идеи, что я делаю неправильно? Нужно ли активировать rtf-Search для моего SQL Server или что-то подобное?

ответ

0

Полнотекстовый поиск работает только с текстовыми столбцами. Вы вставляете в свою базу данных двоичный файл -> rtf. Когда вы выбрали nvarchar, вы сказали серверу sql, который хотите сохранить текст, но вы храните двоичный файл. Для двоичных файлов вместо этого используйте varbinary (max).

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

давайте поговорим о переводчика/фильтр

документация говорит: https://technet.microsoft.com/en-us/en-en/library/ms142531(v=SQL.105).aspx

VARBINARY (макс) или VARBINARY данных Один VARBINARY (макс) или VARBINARY столбец может хранить различные типы документов , SQL Server 2008 поддерживает любой тип документа, для которого фильтр установлен и доступен в операционной системе. Тип документа каждого документа определяется расширением файла документа. Например, для расширения файла .doc полнотекстовый поиск использует фильтр, поддерживающий документы Microsoft Word. Для получения списка доступных типов документов запросите представление каталога sys.fulltext_document_types.

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

Наконец TODO:

проверить, если «.rtf» как фильтр доступен ,

EXEC sp_help_fulltext_system_components 'filter'; 

затем добавить вычисляемый столбец к вам таблицы «тип», который всегда возвращает «.rtf»

alter table yourname add [Typ] AS (CONVERT([nvarchar](8),'.rtf',0)); 

Это может использоваться в настоящее время для индекса как спецификации типа.

Смежные вопросы