Как указано в заголовке, что такое полнотекстовый индекс и когда его использовать?
Что такое полнотекстовый индекс и когда я должен его использовать?
Ответ 1
В базах данных индексы обычно используются для повышения производительности при поиске чего-то определенного в вашем предложении where. Однако, когда дело доходит до фильтрации некоторого текста, например. используя что-то вроде WHERE TextColumn LIKE '%searchstring%'
, поиск выполняется медленно, поскольку работа регулярных индексов базы данных оптимизирована для совпадений с "целым содержимым" столбца, а не только его частью. В частности, поиск LIKE не может использовать какой-либо индекс.
Как упоминалось в комментарии ниже MySQL нуждается в синтаксисе MATCH () ... AGAINST
для поиска в полнотекстовом индексе; BTW это зависит от поставщика базы данных. В MS SQL вы можете использовать CONTAINS
, поэтому имейте это в виду, когда вы планируете также поддерживать другие базы данных.
Полнотекстовые индексы работают лучше для обычного текста, потому что они оптимизированы для этих типов столбцов. Очень упрощено: они разбивают текст на слова и делают указатель на слова, а не весь текст. Это работает намного быстрее при поиске текста при поиске конкретных слов.
Ответ 2
Полнотекстовый индекс - это индекс, который вы применяете в базе данных MySQL, к текстовым полям, на которых вы планируете полнотекстовый поиск. Полнотекстовый поиск использует синтаксис match(field) against('text')
. Если вы хотите запустить полнотекстовый поиск, у вас должен быть полный текстовый индекс в столбцах, в которых вы его используете.
Существует три типа поиска Full Text. Я приведу руководство, потому что думаю, что он говорит лучше:
Логический поиск интерпретирует строку поиска, используя правила специальный язык запросов. Струна содержит слова для поиска. Это могут также содержать операторы, которые указать требования, чтобы слово должны присутствовать или отсутствовать в совпадении строк или что он должен быть взвешен выше или ниже обычного. общий такие слова, как "некоторые" или "затем", стоп-слова и не совпадают, если они присутствуют в строке поиска. IN BOOLEAN Модификатор MODE задает логическое значение поиск. Для получения дополнительной информации см. Раздел 11.9.2, "Логический полный текст Поисковые запросы".
Поиск на естественном языке интерпретирует строку поиска как фраза в естественном человеческом языке (a фраза в свободном тексте). Нет специальные операторы. Список остановок применяется. Кроме того, слова, которые присутствует в 50% или более строк считаются общими и не совпадают. Полнотекстовые поиски являются естественными поиск по языку, если модификатор отсутствует учитывая.
Поиск запроса запроса - это модификация естественного языка поиск. Строка поиска используется для выполнять поиск по естественному языку. Затем слова из наиболее релевантных строк возвращаемые поиском, добавляются к строка поиска и поиск сделано снова. Запрос возвращает строки от второго поиска. С QUERY Модификатор EXPANSION задает запрос поиск расширения. Для большего информацию см. в разделе 11.9.3, "Полнотекстовые поиски с запросом Расширение".
Для получения дополнительной информации возьмите gander на странице Полнотекстовый поиск по ссылке.