Полнотекстовый поиск по сравнению со стандартным поиском в базе данных
Что я хочу знать, в чем разница между полнотекстовым поиском (поиск данных в файлах) и стандартным поиском в базе данных (LIKE, IN ect).
Здесь я замечаю, что в файлах нет типов данных, но в базе данных вы можете определить типы данных для конкретных данных.
Я заинтересован в том, какой поиск быстрее, и каковы преимущества и недостатки обоих.
Благодарю.
1 ответ
Есть несколько преимуществ для полнотекстового поиска.
Индексация:
Что-то вроде:
WHERE Foo LIKE '%Bar';
Невозможно воспользоваться индексом. Он должен посмотреть на каждую строку и посмотреть, соответствует ли он. Полнотекстовый индекс, однако, может. Фактически, полнотекстовые индексы могут предложить гораздо большую гибкость с точки зрения порядка соответствия слов, насколько близко эти слова находятся вместе и т. Д.
Сдерживание:
Полнотекстовый поиск может использовать слова. Если вы ищете для запуска, вы можете получить результаты для "побежал" или "работает". Большинство полнотекстовых движков имеют словари на разных языках.
Взвешенные результаты:
Полнотекстовый индекс может включать несколько столбцов. Например, вы можете искать "персиковый пирог", и индекс может включать заголовок, ключевые слова и текст. Результаты, соответствующие названию, могут быть взвешены выше, как более релевантные, и могут быть отсортированы так, чтобы отображаться в верхней части.
Недостатки:
Полнотекстовый индекс потенциально может быть огромным, во много раз больше, чем стандартный индекс B-TREE. По этой причине многие хостинговые провайдеры, которые предлагают экземпляры базы данных, отключают эту функцию или, по крайней мере, взимают дополнительную плату за нее. Например, в последний раз, когда я проверял, Windows Azure не поддерживает полнотекстовые запросы.
Полнотекстовые индексы также могут обновляться медленнее. Если данные сильно меняются, могут быть некоторые задержки обновления индексов по сравнению со стандартными индексами.