sql server - полнотекстовый поиск - PullRequest
0 голосов
/ 08 октября 2009

Итак, скажем, у меня есть две базы данных, одна для производственных целей, а другая для целей разработки.

Когда мы копировали базу данных разработки, полнотекстовый каталог не копировался должным образом, поэтому мы решили создать каталог самостоятельно. Мы сопоставили все таблицы и индексы и создали базу данных, и функция поиска, похоже, тоже работает нормально (но еще полностью протестирована).

Однако в предыдущем каталоге было намного больше файлов, чем в том, который мы создали вручную. Это нормально? Я думал, что они будут иметь одинаковое количество файлов (но размер может отличаться)

1 Ответ

0 голосов
/ 08 октября 2009

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

Второй ... Я предлагаю не использовать функцию свободного текста на сервере sql, если у вас нет другого выбора. Раньше я был большим сторонником свободного текста, но мне показали пример создания индекса Lucene (.net) и его поиска по сравнению с созданием индекса в SQL Server и его поиском. Создание индекса SQL Server по сравнению с созданием индекса Lucene значительно медленнее и сложнее в обслуживании. Поиск по индексу SQL Server значительно менее точен (плохие результаты) по сравнению с Lucene. Lucene походит на ваш собственный Google для поиска данных.

Как? Индексируйте свои данные (только те, которые вам нужны для поиска) в Lucene и включайте первичный ключ данных, которые вы индексируете для последующего использования. Затем выполните поиск по индексу, используя ваш язык и Lucene (.net) API (многие статьи написаны на эту тему). В результатах поиска обязательно верните ПК. После того, как вы определили интересующие вас записи, вы можете перейти к получению остальных данных и / или любых связанных данных на основе возвращенного PK.

Gotchas? Обновление индекса также намного быстрее и проще. Однако для создания индекса, его обновления и поиска в индексе вы должны выполнить свои собственные действия. СУПЕР ЛЕГКО сделать ... но все же ... здесь нет волшебников или одноручного кодирования! Также индекс находится в файловой системе. Если файл открыт и находится в процессе поиска, и вы пытаетесь открыть его снова для другого поиска, у вас, очевидно, будут некоторые проблемы ... поэтому необходимо создать некоторую форму инфраструктуры для открытия и чтения этих индексов.

Как это помогает в SQL Server? Вы можете легко обернуть свой поиск Lucene в функцию CLR или процедуру, которую можно установить в базе данных, которую затем можно использовать, как если бы она была родной для вашего компьютера. -SQL запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...