15. MySQL 8 Fulltext index полнотекстовый индекс

Поделиться
HTML-код
  • Опубликовано: 1 июн 2019
  • Fulltext индекс в MySQL позволяет находить информацию в больших объемах текста
    dev.mysql.com/doc/refman/8.0/...

Комментарии • 24

  • @bubenchik75
    @bubenchik75 Месяц назад

    Жалею, что не посмотрел этот урок раньше 😄 Алексей, спасибо вам большое за то, что вы делаете!

    • @HtmllabRu
      @HtmllabRu  Месяц назад

      Приятно читать о том, что видео пригодилось) Удачи!

  • @user-sd3ii6py8p
    @user-sd3ii6py8p Год назад +2

    Смотрю уже 16 видео и не собираюсь останавливаться! Лучший курс по MySQL, что есть на RUclips. Даже за 3 года ничего лучше не появилось. Спасибо!

    • @HtmllabRu
      @HtmllabRu  Год назад

      Игорь, спасибо столь высокую оценку работы!

  • @user-dk6di4kb7h
    @user-dk6di4kb7h 2 года назад +1

    Спасибо большое Вам за урок!!!

  • @user-bc6vw8nu6x
    @user-bc6vw8nu6x 4 года назад +2

    Спасибо за урок. Впервые в жизни попробовал и очень доволен. Вот только я бы ещё добавил: в поисковую фразу можно вводить несколько слов через запятую, и поиск выдаст результат по каждому из них. И ещё мне не ясно кое-что: если эта "articles" будет фигурировать в запросе с другой таблицей через Join. Смогу ли я в полнотекстовом поиске указать имя этого запроса?

    • @HtmllabRu
      @HtmllabRu  4 года назад +2

      Рад, что пригодилось.
      Полнотекстовый можно использовать и при объединении через join

    • @user-bc6vw8nu6x
      @user-bc6vw8nu6x 4 года назад +1

      @@HtmllabRu спасибо

  • @revolt7647
    @revolt7647 4 года назад

    Привет, есть такой вот вопрос. Допустим у меня есть таблица, и в данной таблице, по запросу через поиск, Я хочу найти три разных определённых значений, в данной таблице по столбцам, и вывести эти поля с этими значениями. Как я могу это сделать? Какой запрос мне нужно применить? Я искал более часа в интернете, но везде пишут только про поиск одного значения, мне же нужно, найти разные значения с одной таблицы, с разных столбцов. Буду очень благодарен, спасибо!)

    • @HtmllabRu
      @HtmllabRu  4 года назад +1

      Озадачили. Обычно строка в таблице объединяет набор полей, потому пробовал бы склеить три значения и искать по полнотекстовому (для примера из доков dev.mysql.com/doc/refman/8.0/en/fulltext-natural-language.html):
      SELECT *
      FROM articles
      WHERE
      MATCH (title, body) AGAINST (CONCAT('database',' ', 'Tricks', ' ', 'configured') IN NATURAL LANGUAGE MODE);
      Сложней представить, что нужно именно отдельные значения находить типа такого: pastebin.com/7qPVGSeP
      Тут индекс по отдельным колонкам и результат выходит такой
      +----+--------+------------------------------------------+
      | id | fields | text |
      +----+--------+------------------------------------------+
      | 4 | title | 1001 MySQL Tricks |
      | 6 | body | When configured properly, MySQL ... |
      | 1 | body | DBMS stands for DataBase ... |
      | 5 | body | In the following database comparison ... |
      +----+--------+------------------------------------------+

  • @djflorfila1985
    @djflorfila1985 2 месяца назад

    Подскажите, пожалуйста, почему Fulltext index в таблице удаляется при копировании базы данных через phpmyadmin? =(

    • @HtmllabRu
      @HtmllabRu  2 месяца назад

      Полнотекстовый индекс перестаёт учитываться на старых записях или на новых?
      Если речь о структуре таблицы, то при копировании SQL-кода таблиц базы надо проверить входить ли индекс в код

  • @mymail333g
    @mymail333g 4 года назад

    А как проведет себя mysql, если вместо слова "уравнений" передать "уравнение"?

    • @thisfil
      @thisfil 3 месяца назад

      судя по всему пройдет дальше, так как стэмминга нет (насколько я понимаю)

  • @yevhenvictorovich2288
    @yevhenvictorovich2288 3 года назад

    При запросе выдает ошибку ERROR 1191 (HY000): Can't find FULLTEXT index matching the column list

    • @HtmllabRu
      @HtmllabRu  3 года назад +1

      А в запросе в match указываются те же поля, что и в самом индексе? Поля должны совпадать по кол-ву и порядку

  • @alexeicodes
    @alexeicodes 3 года назад

    Всё хорошо! Но немного не хватает информации о:
    1) Типе данных TEXT
    2) Когда стоит использовать такой тип индексов и когда нет
    3) Да и вообще интересно узнать как выглядит full-text index таблица, знаю, например, что при обычных индексах это дополнительная "таблица" с сортированными значениями (для бинарного поиска) и указателями, классная идея кстати говоря, а вот что интересно, так это как работает для full text'a?

    • @HtmllabRu
      @HtmllabRu  3 года назад +2

      Спасибо) Постараюсь на некоторые вопросы ответить в грядущих видео 👍

  • @user-ng7yp3jp2b
    @user-ng7yp3jp2b Год назад

    Здравствуйте. Подскажите пожалуйста.
    я создал таблицу
    create table if not exists my_stopwords(
    id int unsigned not null auto_increment primary key,
    word varchar(30)
    ) engine = InnoDB;
    добавил слово
    insert into my_stopwords(word)
    values ('система');
    set global innodb_ft_server_stopword_table = 'foo/my_stopwords'; - и здесь появляется ошибка
    Error Code: 1231. Variable 'innodb_ft_server_stopword_table' can't be set to the value of 'foo/my_stopwords'
    Как её исправить?
    Заранее спасибо.

    • @HtmllabRu
      @HtmllabRu  Год назад +1

      Наша таблица стоп-слов должна иметь структуру такую же как и таблица INNODB_FT_DEFAULT_STOPWORD (посмотреть структуру можно desc INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;), то есть содержать только поле value. Попробуйте убрать поле id и повторить запросы

    • @user-ng7yp3jp2b
      @user-ng7yp3jp2b Год назад

      Спасибо большое.
      Поменял название поля в таблице (word -> value) и убрал поле id, оставил только value, и всё заработало.
      Спасибо ещё раз. Очень полезная курс.

  • @Pacangotoff
    @Pacangotoff Год назад

    Добрый день. У меня вопрос!

    • @Pacangotoff
      @Pacangotoff Год назад +1

      Создал таблицу `my_stopwords`, insert into-ом добавил слово `теорема`, сделал поиск на это слово и поиск не дал результата ---> всё работает.
      Добавляю в таблицу `my_stopwords` слово 'Коши', делаю поиск по этому слову ---> результата не должно быть! Но поиск по этому слову выдает мне текст, содержащий это слово, т.е. запрос работает не правильно... Но при удалении и создании нового индекса, запросы на слово `теорема`, `Коши` работают правильно -----> нет результатов, т.е. правильно.
      Исходя из вышенаписанного (если оно читабельно и понятно изложено), чтобы добавить слово в таблицу стопслов и оно заработало нужно переделывать индекс???P.s.Поправьте меня если неправильно выражаюсь

    • @HtmllabRu
      @HtmllabRu  Год назад +1

      @@Pacangotoff вы правы, после добавления стопслова нужно обновить (перестроить) индекс