2010-03-12 2 views
4
  1. Что такое индексирование?
  2. Что такое полный текст?

Я знаю, что ответы на оба вопроса, но я не могу подвергать эти ответы в точном пути к интервьюеру:define mysql indexing

  • индексация означает что-то вроде индекса в книге
  • полнотекстового средство для поиска строка

Можете ли вы дать мне очень простое определение по каждому из этих вопросов?

+0

Любые конкретные причины, по которым это делает ссылку на mySQL? Само по себе концепции Index и FullText являются общими для всех вещей SQL и других. Есть ли предполагаемое ожидание предоставления mySQL конкретных данных? – mjv

+0

Я работаю над mysql, так что я выбрал тег mysql. – Bharanikumar

ответ

3

Индекс в mysql - это отображение из каждого значения в столбце (или значениях в столбце) в строки, содержащие это значение в этом столбце (или эти значения в наборе столбцов).

Полный текстовый индекс в столбце - это отображение от каждого слова (обычно разделенного пробелом) до набора строк, содержащего это слово.

Нормальный индекс: ID: 1 "бар" ID: 2 "Foo Баз"

поиск "Foo" -> никаких результатов. поиск "Foo Baz" -> Строка с идентификатором: 2 поиска для "бара" -> Строка с идентификатором: 1

Полный текст Индекс: ID: 1 "бар" ID: 2 "Foo Баз"

поиск "Foo" -> Строка с идентификатором: 2 поиск "Foo Baz" -> Строка с идентификатором: 2 поиск "бара" -> Строка с идентификатором: 1

+0

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

+0

если мой движок является innodb, значит, я не могу использовать полный текст , то как только индекс - это путь ... Теперь мне нужно, что эффективный, индексный или полный текст – Bharanikumar

+0

@Bharanikumar: «который будет работать индексированием или полнотекстовым». Это зависит. Предположим, что у вас есть нормальный индекс и индекс полного текста в столбце 'x': если вы используете' SELECT x, y, z FROM table WHERE MATCH (x) AGAINST ('searchterm' IN BOOLEAN MODE) ', будет использоваться полнотекстовый индекс , Если вы используете 'SELECT x, y, z FROM table WHERE x LIKE 'searchterm%'', будет использоваться нормальный индекс. – Piskvor

6

Indexing, это процесс создания индексов. Индексы представляют собой структуры, которые позволяют SQL (или, в более общем смысле, СУБД или поисковой системе) находить очень эффективным образом, записи, основанные на значении одного (или нескольких) полей, которые они содержат.

Например, база данных может включать в себя таблицу со студенческими записями со своим идентификатором студента, их именем, датой рождения, номером телефона ... Создав индекс на Телефонном номере, мы можем затем выполнить поиск Студента на основе номер телефона. В отсутствие индекса система обнаружила бы те же записи, но эта операция была бы перенесена путем просмотра каждой отдельной записи и сравнения с нужным номером телефона.


FullText Индексирование это процесс создания индекса для одного (или несколько полей, которые содержат текст). В отличие от обычных индексов, которые основаны на сравнении полного значения поля (или, возможно, простого регулярного выражения) с желаемым значением поиска, индекс FullText может найти запись на основе слов, найденных в поле.

Например, библиографическая база данных может содержать записи, описывающие книги, с такими полями, как ISBN, Author, Title, Type, Price ...). Полнотекстовый индекс (иногда называемый «каталогом») на поле «Название» позволил бы эффективно определить книгу «Старик и море» при поиске, произнеся слово «человек».

Двигатели с полным текстом, как правило, имеют встроенное и параметризуемое «понимание» языковых концепций, относящихся к тексту. Например, слово «шум» (также называемое «стоп-слова») - это слово, часто встречающееся в тексте (например, «the», «and», «of», «in», на английском языке), может быть проигнорировано с целью минимизация размера индекса и более эффективный поиск с более избирательными словами. Кроме того, полнотекстовый движок может знать различные грамматические формы слова, например, единственную и множественную форму слов (как говорят Inch и Inches, Foot and Feet, Cat и Cats) или сопряжение глаголов (как Catch, Catching и Пойманный или Интерпретирующий, Интерпретирующий, Интерпретированный). Благодаря этой грамматической осведомленности, FullText Engine может (если это указано) найти слова, даже если они не соответствуют точно критериям поиска.
Механизм FullText также обычно выставляет язык поиска/синтаксис, который позволяет пользователям указывать определенные элементы требуемого поиска. Например, для поиска слова «море» в 5 словах слова «человек». Или найти слово «Озеро» или «Океан» и слово «вода» и т. Д.

+0

Можете ли вы предоставить ссылку, показывающую, где вы обнаружили, что поиск в FullText Indexing соответствует грамматическим формам? –

+1

@Abe Miessler: для mySQL (который, кажется, в центре внимания этого вопроса) этот тип функции обеспечивается посредством плагинов парсера (http://dev.mysql.com/doc/refman/5.4/en /full-text-plugins.html), например, в плагине mnoGoSearch (http://www.mnogosearch.org/doc/msearch-udmstemmer.html). Подобные функции также найдены в MSSQL и поддерживаются с помощью Word Breakers и Stemmers, см., Например, http://msdn.microsoft.com/en-us/library/ms142566.aspx – mjv

0
  1. Индексирование означает, что наряду с данными, которые вы индексируете, есть способ эффективно получить эти данные. Этот ярлык является B-деревом. Индексированные столбцы быстрее читаются (уже объяснены), но медленнее писать, потому что B-дерево необходимо обновить.