Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Winnipuh,

для pdf у меня заводилось только с Adobe'овским IFilter. а для *.cs файлов в колонку fileExtension, можно написать txt.
23 июл 15, 20:27    [17927353]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
+ для openoffice форматов это работает.
[url=
http://www.ifiltershop.com/staroffice-openoffice-ifilter.html]тынц[/url]
23 июл 15, 20:29    [17927357]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
churupaha
Winnipuh,

для pdf у меня заводилось только с Adobe'овским IFilter. а для *.cs файлов в колонку fileExtension, можно написать txt.


ну так поставляет же Microsoft 150 фильтров, тут даже дело не в том, как в конкретном случае проиндексировать,
а как заставить работать в общем случае.

Да, я файл .cs добавлял как .txt - сработал.

Кстати, интересный вариант - там есть фильтр для zip файлов, по идее должны индексироваться файлы, которые внутри зипа и для которых есть фильтры, скажем внутри лежат txt, rtf, jpg, тогда txt, rtf должны индексироваться.
Тоже не работает.

Проверил на SQL 2012, SQL 2014 - та же фигня.
23 июл 15, 21:18    [17927463]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Winnipuh
churupaha
Winnipuh,

для pdf у меня заводилось только с Adobe'овским IFilter. а для *.cs файлов в колонку fileExtension, можно написать txt.


ну так поставляет же Microsoft 150 фильтров, тут даже дело не в том, как в конкретном случае проиндексировать,
а как заставить работать в общем случае.

Да, я файл .cs добавлял как .txt - сработал.

Кстати, интересный вариант - там есть фильтр для zip файлов, по идее должны индексироваться файлы, которые внутри зипа и для которых есть фильтры, скажем внутри лежат txt, rtf, jpg, тогда txt, rtf должны индексироваться.
Тоже не работает.

Проверил на SQL 2012, SQL 2014 - та же фигня.


Это зависит от таго насколько полно реализован интерфейс IFilter. иногда они возвращают только property.
23 июл 15, 21:22    [17927479]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
IFilter может возвращать текст из документа того типа, под который он написан и/или свойства документа (автор и т. п..). Некоторые только свойства возвращают.
23 июл 15, 21:25    [17927488]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
вот этот для pdf написан по кашруту

Adove PDF IFilter 19.6Mb

Самое важное с ним

Adobe
After installing the PDF iFilter, it is recommended that you set your system PATH environment variable to the "bin" folder of the "Ifilter" installation.
23 июл 15, 21:37    [17927527]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
churupaha
IFilter может возвращать текст из документа того типа, под который он написан и/или свойства документа (автор и т. п..). Некоторые только свойства возвращают.



хмм... есть одна идея, завтра с утра проверю
23 июл 15, 21:41    [17927540]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Winnipuh
churupaha
IFilter может возвращать текст из документа того типа, под который он написан и/или свойства документа (автор и т. п..). Некоторые только свойства возвращают.



хмм... есть одна идея, завтра с утра проверю


хочется подергать реализации IFilter самостоятельно за методы? И проверить действительно ли те что в FilterPack64 для pdf и прочего не MS возвращают тольпо свойства? Поделитесь результатами. (Сравните размеры архивов для начала FilterPack64 и Adobe).
23 июл 15, 21:47    [17927553]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
[quot churupaha]
Winnipuh
пропущено...



хмм... есть одна идея, завтра с утра проверю


хочется подергать реализации 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]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Winnipuh,

ух ты, тут ключевой момент видать FilterPack SP2.
24 июл 15, 11:46    [17929204]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
churupaha
Winnipuh,

ух ты, тут ключевой момент видать FilterPack SP2.


да сам *ею... надо бы повторить на чистом сервере, но вот так получилось.
Причем делал на SQL 2012, SQL 2014 на одной машине с Windows Server 2012.

Попробую еще на другом компьютере аккуратно проверить, но там у меня Windows 7 c такими же, но Developer Editions.
24 июл 15, 12:03    [17929362]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Winnipuh
во-вторых не исключено, что такие же чудеса могут быть с другими фильтрами
;-)


у вас большое терпение :), я вон, как в картинке

К сообщению приложен файл. Размер - 35Kb
24 июл 15, 16:10    [17931048]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Сделал c# приложение, которое использует установленный в системе соответствующий IFilter для вынимания текста из файла, подсунул свой zip, который не ищется запросами (см. выше) - получил текст всех файлов, которые у него внутри, для которых есть фильтры

24 июл 15, 18:59    [17931928]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
а выложите свой неуловимый zip сюда (если там, конечно, тестовые данные). потестить.
24 июл 15, 19:30    [17932081]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
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'


Column_nameTypeComputedLengthPrecScaleNullableTrimTrailingBlanksFixedLenNullInSourceCollation
docidbigintno8190no(n/a)(n/a)
ftkeyhierarchyidno892no(n/a)no


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]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
churupaha,

о, хороший анализ.

ок, в понедельник именно этот (долбаный ) файл вкину.
24 июл 15, 20:37    [17932272]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
churupaha,

кстати, а для 7z фильтра нету свободного?
24 июл 15, 20:39    [17932283]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Winnipuh
churupaha,

кстати, а для 7z фильтра нету свободного?


даже не знаю. найдете - сообщите обязательно. но его можно запилить и самому, впринципе :). меня как-то волновал вопрос, а у ABBY, случаем, нету IFilter для всяких картинок :). чтобы можно было делать полнотекстовый поиск "по картинкам с надписями".
24 июл 15, 21:19    [17932434]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
churupaha
Winnipuh
churupaha,

кстати, а для 7z фильтра нету свободного?


даже не знаю. найдете - сообщите обязательно. но его можно запилить и самому, впринципе :). меня как-то волновал вопрос, а у ABBY, случаем, нету IFilter для всяких картинок :). чтобы можно было делать полнотекстовый поиск "по картинкам с надписями".


ок , но в наше-то время, когда космические корабли бороздят... сначала надо поискать, а потом уже самому ;-)
24 июл 15, 21:32    [17932474]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
вот тут список еще:

ifiltershop
CHM IFilter for Compiled HTML Help files
DWF IFilter for design documents in Autodesk Design Web Format
DWG IFilter for CAD drawings in DWG format
FreeMind IFilter for FreeMind memory mapping files
HTML+ IFilter enhanced IFilter for documents in HTML format
MindManager IFilter for Mindjet MindManager documents
MSG IFilter for emails stored in MSG format
PDF+ IFilter enhanced IFilter for Adobe PDF files
PostScript IFilter for PostScript files
RAR IFilter indexes content of RAR archives
StarOffice/OpenOffice IFilter for StarOffice, OpenOffice and OASIS OpenDocument files
WMV/WMA IFilter for Windows Media Video and Windows Media Audio files
XML IFilter for documents in XML format
XMP IFilter indexes Adobe XMP metadata in JPEG, GIF, PNG, PS, EPS, PSD, AI and SVG files
ZIP IFilter indexes content of ZIP archives


за деньги. ну и потестить время есть.
24 июл 15, 21:34    [17932480]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
7z чета не гуглится совсем

http://sourceforge.net/p/sevenzip/discussion/45797/thread/85cb5f72

2012-10-29
Now I don't have such plans.
24 июл 15, 21:36    [17932487]     Ответить | Цитировать Сообщить модератору
 Re: SQL2012 FTS: почему не индексируются .pdf, .cs и т.д.?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
churupaha,

вкинул файл, его надо переименовать в zip
После исследования и минимизации получается так:

В зипе несколько файлов, один из них rtf.
Если я его удаляю из зипа - все ищется по словам, которые в других файлах, зип находится.
Если он там - не находятся слова из других файлов и из него тоже.

Примечательно, что сам этот rtf файл отдельно добавленный в таблицу - индексируется и находится.

К слову: у меня на другой машине проблема с rtf фильтром, не работает и дает ошибку
27 июл 15, 12:09    [17938437]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить