У меня есть таблица, которая хранит дерево как структуру имен файлов. В этой таблице в настоящее время имеется 8 миллионов записей. Я работаю над тем, чтобы быстро найти список файлов, которые имеют определенный серийный номер, встроенный в имя.Использование полнотекстового поиска по именам файлов
FS_NODES
-----------------------------------
NODE_ID bigint PK
ROOT_ID bigint
PARENT_ID bigint
NODE_TYPE tinyint
NODE_NAME nvarchar(250)
REC_MODIFIED_UTC datetime
REC_DELETION_BIT bit
имя Пример файла (как хранится в имя_узла):
scriptname_SomeSerialNumber_201205240730.xml
Как и ожидалось, LIKE заявление, чтобы найти файлы занимает несколько минут, чтобы просмотреть всю таблицу и хотели бы улучшить это. Для имен нет согласованных шаблонов, так как каждому разработчику нравится создавать собственное соглашение об именах.
Я попытался использовать полнотекстовый поиск и действительно люблю эту идею, но не могу ее найти, чтобы найти файлы, основанные на ключевых словах в названии. Я считаю, что проблема связана с подчеркиванием.
Любые предложения о том, как я могу заставить это работать? Я использую нейтральный язык для каталога.
@@VERSION
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
Nov 24 2008 13:01:59
Copyright (c) 1988-2005 Microsoft Corporation
Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
Есть ли способ изменить каталог и разделить ключевые слова вручную? Спасибо!
Обычное соглашение об именах работает, но это помогает только продвигаться вперед. Имя файла может содержать несколько ключевых слов, и мне нравится стиль дерева выражений поиска с помощью fts. Я знаю, что это не ваши типичные «слова», но это было бы идеальным решением, если бы я мог заставить его сломать символы подчеркивания. Мой план B - найти шаблоны в именах и разобрать и пометить ключевые слова, но это проще сказать. Спасибо за ваш отзыв. – RickCard
Я добавил вычисленную колонку, как вы предложили, и FTS смогла использовать эту колонку в каталоге. Я снова попробовал запрос CONTAINS в новом столбце и возвратил записи, как ожидалось, в миллисекундах по сравнению с минутами. :) Спасибо! – RickCard