Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
Сделал выборкуselect document_type from sys.fulltext_document_types получил 50 расширений, которые сервер обрабатывает Установил FilterPack64, рестартонул сервер, сделал выборку select document_type from sys.fulltext_document_types получил 150 расширений, в их числе .pdf, .cs и еще много других. Сделал таблицу, каталог: create table DocumentRepository ( id int not null primary key identity, fileName nvarchar(250), fileSize int, fileExtension NVARCHAR(10), attachment varbinary(max) ); GO GRANT INSERT,UPDATE,SELECT,DELETE on DocumentRepository to public; GO CREATE FULLTEXT CATALOG FTSCatalog AS DEFAULT; GO CREATE FULLTEXT INDEX ON dbo.DocumentRepository (fileName, attachment TYPE COLUMN fileExtension) KEY INDEX PK__Document__3213E83FEFB4F2B9 ON FTSCatalog WITH CHANGE_TRACKING AUTO; GO Добавил несколько файлов (поле с содержимым не привожу здесь) ---------------- Microsoft Project Silk.pdf 7963 .pdf kdd-camera-ready-final.pdf 354 .pdf pro_wcf_4_2nd_edition.pdf 22193 .pdf dbw.txt 3 .txt mydoc.docx 11 .docx RollingFileAppender.cs 50 .cs Запросы select * from DocumentRepository where contains(*,N'Firefox') ------ 0, слово внутри pdf select * from DocumentRepository where contains(*,N'Appender') ----- 0, слово внутри .cs select * from DocumentRepository where contains(*,N'database') -------- dbw.txt 3 .txt mydoc.docx 11 .docx Вывод: внутри полей новых типов .cs, .pdf не находит внутри тех, которые были до установки фильтер пака - ищет. Что не так? куда копать? |
23 июл 15, 18:09 [17927020] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
Winnipuh, для pdf у меня заводилось только с Adobe'овским IFilter. а для *.cs файлов в колонку fileExtension, можно написать txt. |
23 июл 15, 20:27 [17927353] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
+ для openoffice форматов это работает. [url= http://www.ifiltershop.com/staroffice-openoffice-ifilter.html]тынц[/url] |
23 июл 15, 20:29 [17927357] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
ну так поставляет же Microsoft 150 фильтров, тут даже дело не в том, как в конкретном случае проиндексировать, а как заставить работать в общем случае. Да, я файл .cs добавлял как .txt - сработал. Кстати, интересный вариант - там есть фильтр для zip файлов, по идее должны индексироваться файлы, которые внутри зипа и для которых есть фильтры, скажем внутри лежат txt, rtf, jpg, тогда txt, rtf должны индексироваться. Тоже не работает. Проверил на SQL 2012, SQL 2014 - та же фигня. |
||
23 июл 15, 21:18 [17927463] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
Это зависит от таго насколько полно реализован интерфейс IFilter. иногда они возвращают только property. |
||||
23 июл 15, 21:22 [17927479] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
IFilter может возвращать текст из документа того типа, под который он написан и/или свойства документа (автор и т. п..). Некоторые только свойства возвращают. |
23 июл 15, 21:25 [17927488] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
вот этот для pdf написан по кашруту Adove PDF IFilter 19.6Mb Самое важное с ним
|
||
23 июл 15, 21:37 [17927527] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
хмм... есть одна идея, завтра с утра проверю |
||
23 июл 15, 21:41 [17927540] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
хочется подергать реализации IFilter самостоятельно за методы? И проверить действительно ли те что в FilterPack64 для pdf и прочего не MS возвращают тольпо свойства? Поделитесь результатами. (Сравните размеры архивов для начала FilterPack64 и Adobe). |
||||
23 июл 15, 21:47 [17927553] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
[quot churupaha]
хочется подергать реализации IFilter самостоятельно за методы? И проверить действительно ли те что в FilterPack64 для pdf и прочего н проверил, по шагам: 1. установил FilterPack SP2 2. сделал снова EXEC sp_fulltext_service @action='load_os_resources', @value=1; EXEC sp_fulltext_service 'verify_signature', 0 -- don't verify signatures EXEC sp_fulltext_service 'update_languages'; -- update language list EXEC sp_fulltext_service 'restart_all_fdhosts'; EXEC sp_help_fulltext_system_components 'filter' reconfigure with override 3. рестартонул SQL Server 4. перестроил FTC 5. .cs, .pdf - индексируются! примечание: я могу предположить, что после установки фильтер-пака в первый раз что-то недоделал, недосмотрел и т.п., х.с.н. НО поиск по docx, xslx и пр. - работал, а они были из фильтерпака. 6. Но интересное осталось: .zip так и не индексируются и , соответственно - не ищутся. |
||
24 июл 15, 11:11 [17928965] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
Winnipuh, ух ты, тут ключевой момент видать FilterPack SP2. |
24 июл 15, 11:46 [17929204] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
да сам *ею... надо бы повторить на чистом сервере, но вот так получилось. Причем делал на SQL 2012, SQL 2014 на одной машине с Windows Server 2012. Попробую еще на другом компьютере аккуратно проверить, но там у меня Windows 7 c такими же, но Developer Editions. |
||
24 июл 15, 12:03 [17929362] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
да уж.. что-то кривой фильтр для зипа или что-то с ним не в порядке... Сделал эксперимент с zip Даны два зипа: 1. my.zip внутри файлы, один из них 1.txt со словами 'transaction', 'phrase' 2. hznaetchei.zip внутри файлы, один из них 2.txt со словами 'transaction' 1. Перестроил каталог 2. Ищу слово 'phrase', 0 результатов 3. Ищу слово 'transasction' нашел только hznaetchei.zip 4. Беру файл 1.txt из my.zip и копирую в hznaetchei.zip 5. Ищу слово 'phrase', 1 результат: hznaetchei.zip 6. Перестроил каталог, п.5. - то же. То есть мой зип не ищется Хрен бы с ним с зипом, любителей искать в зипе не так много, но во-первых он предосталяется и предполагается как рабочий, а во-вторых не исключено, что такие же чудеса могут быть с другими фильтрами ;-) |
24 июл 15, 15:50 [17930908] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
у вас большое терпение :), я вон, как в картинке К сообщению приложен файл. Размер - 35Kb |
||
24 июл 15, 16:10 [17931048] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
Сделал c# приложение, которое использует установленный в системе соответствующий IFilter для вынимания текста из файла, подсунул свой zip, который не ищется запросами (см. выше) - получил текст всех файлов, которые у него внутри, для которых есть фильтры![]() |
24 июл 15, 18:59 [17931928] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
Winnipuh, спасибо за результаты. затестил у себя поиск в zip'ах. таки ищет. Microsoft SQL Server 2014 - 12.0.4100.1 (X64) Apr 20 2015 17:29:27 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) К сообщению приложен файл. Размер - 42Kb |
24 июл 15, 19:24 [17932026] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
а выложите свой неуловимый zip сюда (если там, конечно, тестовые данные). потестить. |
24 июл 15, 19:30 [17932081] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
Можно также поглядеть что-там реально в индексе сохранено/* Если ключ таблицы на которую построен FTS-индекс не целое число, то FTS создает доп. таблицу с маппингом source_table_key, internal_int_key. Имя этой таблицы можно увидеть в плане FTS-запроса. */ select * from dbo.docs d inner join freetexttable ( [dbo].[docs], [file_stream], 'FORMSOF(INFLECTIONAL, "минздрав")', language N'Russian' ) ftsr on d.path_locator = ftsr.[key] where ftsr.[rank] > 0 order by ftsr.[rank] desc /* |--Compute Scalar(DEFINE:([d].[parent_path_locator]=[drop_me].[dbo].[docs].[parent_path_locator] as [d].[parent_path_locator], [d].[file_type]=[drop_me].[dbo].[docs].[file_type] as [d].[file_type], [d].[cached_file_size]=[drop_me].[dbo].[docs].[cached_file_size] as [d].[cached_file_size])) |--Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1000])) |--Sort(ORDER BY:(FulltextMatch.[score] DESC)) | |--Nested Loops(Inner Join, OUTER REFERENCES:([drop_me].[sys].[fulltext_index_docidmap_245575913].[ftkey])) | |--Nested Loops(Inner Join, OUTER REFERENCES:(FulltextMatch.[docid])) | | |--Filter(WHERE:(FulltextMatch.[score]>(0))) | | | |--Table-valued function | | |--Clustered Index Seek(OBJECT:([drop_me].[sys].[fulltext_index_docidmap_245575913].[i1]), SEEK:([drop_me].[sys].[fulltext_index_docidmap_245575913].[docid]=FulltextMatch.[docid]) ORDERED FORWARD) | |--Compute Scalar(DEFINE:([d].[parent_path_locator]=CASE WHEN [drop_me].[dbo].[docs].[path_locator] as [d].[path_locator].GetLevel()=(1) THEN NULL ELSE [drop_me].[dbo].[docs].[path_locator] as [d].[path_locator].GetAncestor((1)) END)) | |--Index Seek(OBJECT:([drop_me].[dbo].[docs].[PK__docs__5A5B77D5998EFDFC] AS [d]), SEEK:([d].[path_locator]=[drop_me].[sys].[fulltext_index_docidmap_245575913].[ftkey]) ORDERED FORWARD) |--RID Lookup(OBJECT:([drop_me].[dbo].[docs] AS [d]), SEEK:([Bmk1000]=[Bmk1000]) LOOKUP ORDERED FORWARD) У меня это sys.fulltext_index_docidmap_245575913 А потом колупаем. Логинимся под DAC */ -- select * from sys.internal_tables where name like 'fulltext_%' sp_help 'sys.fulltext_index_docidmap_245575913'
select d.name, k.* from sys.dm_fts_index_keywords_by_document(db_id(N'drop_me'), object_id(N'dbo.docs')) k inner join sys.fulltext_index_docidmap_245575913 fid on fid.docid = k.document_id inner join dbo.docs d on d.path_locator = fid.ftkey order by d.path_locator В случае целочисленного ключа на исходной таблице можно без этих приседаний с sys.fulltext_index_docidmap_245575913 fid on fid.docid = k.document_id К сообщению приложен файл. Размер - 31Kb |
|||||||||||||||||||||||||||||||
24 июл 15, 20:05 [17932179] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
churupaha, о, хороший анализ. ок, в понедельник именно этот (долбаный ![]() |
24 июл 15, 20:37 [17932272] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
churupaha, кстати, а для 7z фильтра нету свободного? |
24 июл 15, 20:39 [17932283] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
даже не знаю. найдете - сообщите обязательно. но его можно запилить и самому, впринципе :). меня как-то волновал вопрос, а у ABBY, случаем, нету IFilter для всяких картинок :). чтобы можно было делать полнотекстовый поиск "по картинкам с надписями". |
||
24 июл 15, 21:19 [17932434] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
ок , но в наше-то время, когда космические корабли бороздят... сначала надо поискать, а потом уже самому ;-) |
||||
24 июл 15, 21:32 [17932474] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
вот тут список еще:
за деньги. ну и потестить время есть. |
||
24 июл 15, 21:34 [17932480] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
7z чета не гуглится совсем http://sourceforge.net/p/sevenzip/discussion/45797/thread/85cb5f72
|
||
24 июл 15, 21:36 [17932487] Ответить | Цитировать Сообщить модератору |
Winnipuh Member [заблокирован] Откуда: Київ Сообщений: 10428 |
churupaha, вкинул файл, его надо переименовать в zip После исследования и минимизации получается так: В зипе несколько файлов, один из них rtf. Если я его удаляю из зипа - все ищется по словам, которые в других файлах, зип находится. Если он там - не находятся слова из других файлов и из него тоже. Примечательно, что сам этот rtf файл отдельно добавленный в таблицу - индексируется и находится. К слову: у меня на другой машине проблема с rtf фильтром, не работает и дает ошибку |
27 июл 15, 12:09 [17938437] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |