В настоящее время я ищу способ поиска большой базы данных (500 МБ - 10 ГБ или больше на 10 таблицах) с большим количеством разных полей (nvarchars и bigints). Многие поля, которые нужно искать, находятся не в одной таблице.MS Sql Полнотекстовый поиск против выражения LIKE
Пример: Поиски «5124» Питера должны вернуть все элементы, которые ...
- имеет идентификатор с 5124 в нем,
- есть «Питер» в названии или описании
- имеют тип идентификатор элемента с 5124 в нем
- , созданный пользователем с именем «питер» или пользователя, чей идентификатор имеет 5124 в нем
- , созданный пользователем с «5124» или «питер» в его адрес.
Как я должен выполнить поиск? Я прочитал, что полнотекстовый поиск MS-Sql намного более эффективен, чем запрос с ключевым словом LIKE, и я думаю, что синтаксис более ясен, но я думаю, что он не может найти значения bigint (id), и я прочитал, что он имеет проблемы с индексированием и, следовательно, замедляет вставки в БД. В моем проекте будет больше вставки, чем чтение, так что это может быть вопросом.
Спасибо заранее, Marks
Я должен посмотреть на них, когда у меня больше времени, но я хотел бы знать решение, если остался с MS SQL Server. – Marks
Вы можете использовать полнотекстовый поиск для поиска не целочисленных (ID) столбцов. Затем извлеките любые числа из поискового запроса и используйте стандартные запросы выбора SQL для проверки столбцов integer (ID). Существует несколько методов, помогающих снизить проблемы с производительностью индексирования. См. Http://stackoverflow.com/questions/933351/ms-sql-server-2000-slow-full-text-indexing. – Mike