Полнотекстовый поиск по сравнению со стандартным поиском в базе данных

Что я хочу знать, в чем разница между полнотекстовым поиском (поиск данных в файлах) и стандартным поиском в базе данных (LIKE, IN ect).

Здесь я замечаю, что в файлах нет типов данных, но в базе данных вы можете определить типы данных для конкретных данных.

Я заинтересован в том, какой поиск быстрее, и каковы преимущества и недостатки обоих.

Благодарю.

1 ответ

Решение

Есть несколько преимуществ для полнотекстового поиска.

Индексация:

Что-то вроде:

WHERE Foo LIKE '%Bar';

Невозможно воспользоваться индексом. Он должен посмотреть на каждую строку и посмотреть, соответствует ли он. Полнотекстовый индекс, однако, может. Фактически, полнотекстовые индексы могут предложить гораздо большую гибкость с точки зрения порядка соответствия слов, насколько близко эти слова находятся вместе и т. Д.

Сдерживание:

Полнотекстовый поиск может использовать слова. Если вы ищете для запуска, вы можете получить результаты для "побежал" или "работает". Большинство полнотекстовых движков имеют словари на разных языках.

Взвешенные результаты:

Полнотекстовый индекс может включать несколько столбцов. Например, вы можете искать "персиковый пирог", и индекс может включать заголовок, ключевые слова и текст. Результаты, соответствующие названию, могут быть взвешены выше, как более релевантные, и могут быть отсортированы так, чтобы отображаться в верхней части.

Недостатки:

Полнотекстовый индекс потенциально может быть огромным, во много раз больше, чем стандартный индекс B-TREE. По этой причине многие хостинговые провайдеры, которые предлагают экземпляры базы данных, отключают эту функцию или, по крайней мере, взимают дополнительную плату за нее. Например, в последний раз, когда я проверял, Windows Azure не поддерживает полнотекстовые запросы.

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

Другие вопросы по тегам