Определить индексацию MySQL
- Что такое индексация?
- Что такое полный текст?
Я знаю ответы на оба вопроса, но я не могу точно представить эти ответы интервьюеру:
- индексирование означает что-то вроде индексации в книге
- полнотекст означает строку поиска
Можете ли вы дать мне очень простое определение для каждого из этих вопросов?
3 ответа
Индекс в MySQL представляет собой сопоставление каждого значения в столбце (или значений в наборе столбцов) со строками, содержащими это значение в этом столбце (или эти значения в наборе столбцов).
Полнотекстовый индекс столбца представляет собой сопоставление каждого слова (обычно разделенного пробелами) с набором строк, содержащих это слово.
Нормальный индекс: id:1 "bar" id:2 "foo baz"
поиск "foo" -> нет результатов. поиск по "foo baz" -> строка с идентификатором: 2 поиск по "bar" -> строка с идентификатором: 1
Полнотекстовый индекс: id:1 "bar" id:2 "foo baz"
поиск "foo" -> строка с идентификатором: 2 поиск "foo baz" -> строка с идентификатором: 2 поиск "bar" -> строка с идентификатором: 1
Индексирование, это процесс создания индексов. Индексы - это структуры, которые позволяют SQL (или, в более общем случае, СУБД или поисковой системе) очень эффективным образом находить записи на основе значения одного (или нескольких) полей, которые они содержат.
Например, база данных может включать в себя таблицу, содержащую записи учеников, с их идентификатором ученика, их именем, датой рождения, номером телефона... Создав индекс по номеру телефона, мы можем затем искать ученика по номеру телефона. В отсутствие индекса система обнаружила бы те же записи, но эту операцию можно было бы выполнить, просмотрев каждую запись и сравнив ее с нужным номером телефона.
Полнотекстовое индексирование - это процесс создания индекса для одного (или нескольких полей, содержащих текст). В отличие от обычных индексов, которые основаны на сравнении полного значения поля (или, возможно, простого регулярного выражения) с желаемым значением поиска, индекс FullText может найти запись на основе слов, найденных в поле.
Например, библиографическая база данных может содержать записи, описывающие книги, с такими полями, как ISBN, Автор, Название, Тип, Цена...). Полнотекстовый указатель (иногда называемый "каталогом") в поле "Заголовок" позволит эффективно найти книгу под названием "Старик и море" при поиске по слову "человек".
Полнотекстовые движки обычно имеют встроенное и параметризуемое "понимание" лингвистических концепций, относящихся к тексту. Например, "слово-шум" (также называемое "стоп-словами") - это слова, часто встречающиеся в тексте (например, "the", "and", "of", "in", на английском языке) могут игнорироваться для целей сведение к минимуму размера индекса и повышение эффективности поиска по более отборным словам. Кроме того, полнотекстовый движок может знать о различных грамматических формах слова, например, о единственном и множественном числе слов (как, например, дюймы и дюймы, ступни и ноги, кошка и кошка) или о спряжении глаголов (как улов, ловля). и пойман или истолкован, истолкован, истолкован). Благодаря этой грамматической осведомленности движок FullText Engine может (если это будет указано) найти слова, даже если они не соответствуют в точности критериям поиска.
Механизм FullText также обычно предоставляет язык поиска / синтаксис, который позволяет пользователям указывать конкретные элементы желаемого поиска. Например, чтобы найти слово "море" в пределах 5 слов слова "человек". Или найти слово "озеро" или "океан" и слово "вода" и т. Д.
- Индексирование означает, что наряду с данными, которые вы индексируете, есть способ получить к ним эффективный способ. Этот ярлык является B-деревом. Индексированные столбцы быстрее читаются (уже объяснено), но медленнее пишут, потому что B-дерево должно быть обновлено.