Я пытаюсь настроить полнотекстового поиска для таблицыAzure SQL Server полнотекстового поиска не работает .doc .docx типов
Я сделал все, чтобы сделать его работу:
EXEC sp_fulltext_catalog 'DocumentsCatalog', 'create';
EXEC sp_fulltext_catalog 'DocumentsCatalog', 'start_full'
EXEC sp_fulltext_table 'dbo.DocumentBody', 'create', 'DocumentsCatalog', 'PK_DocumentBody'
EXEC sp_fulltext_column 'dbo.DocumentBody', 'Value', 'add', 0, 'Type'
EXEC sp_fulltext_table 'dbo.DocumentBody', 'start_change_tracking'
EXEC sp_fulltext_table 'dbo.DocumentBody', 'update_index'
Кроме того, чтобы предотвратить вопросы о поддержке этих типов документов моей базе данных я сделал:
SELECT *
FROM sys.fulltext_document_types
WHERE document_type IN ('.doc', '.docx', '.html')
Выход:
document_type |class_id | path |version |manufacturer
--------------|------------------------------------|---------|--------------|-----------------------
.doc |64F1276A-7A68-4190-882C-5F14B7852019| NULL | |
.docx |5A98B233-3C59-4B31-944C-0E560D85E6C3| NULL | |
.html |E0CA5340-4534-11CF-B952-00AA0051FE20| NULL | 12.0.6828.0 | Microsoft Corporation
После этого я вставил 2 документа с типами .html 'и' .docx '.
Когда я в поисках
SELECT *
FROM DocumentBody
WHERE CONTAINS([Value], 'some html content')
он работает, как ожидалось, но когда я делаю то же самое для содержания «.docx», он ничего не возвращает.
Кто-нибудь знает, почему полнотекстовый поиск типа '.docx' или '.doc' не работает должным образом?
Если это так, в чем причина, чтобы установить тип документа? Есть ли у вас ссылка на MSDN, которая описывает этот подход? –
Извлечение текста является лишь обходным путем - https://blogs.msdn.microsoft.com/jasonz/2009/08/31/sample-parsing-content-in-c-using-ifilter/ – ErikEJ
Спасибо Эрик. Я наконец понял. поэтому для локального SQL Server я могу установить IFilters для разных типов документов и использовать его, как я ожидал. Для базы данных Azure SQL она не работает, потому что она не поддерживает типы документов .doc и .docx, и я должен использовать описанный подход –