Спасибо за урок. Впервые в жизни попробовал и очень доволен. Вот только я бы ещё добавил: в поисковую фразу можно вводить несколько слов через запятую, и поиск выдаст результат по каждому из них. И ещё мне не ясно кое-что: если эта "articles" будет фигурировать в запросе с другой таблицей через Join. Смогу ли я в полнотекстовом поиске указать имя этого запроса?
Привет, есть такой вот вопрос. Допустим у меня есть таблица, и в данной таблице, по запросу через поиск, Я хочу найти три разных определённых значений, в данной таблице по столбцам, и вывести эти поля с этими значениями. Как я могу это сделать? Какой запрос мне нужно применить? Я искал более часа в интернете, но везде пишут только про поиск одного значения, мне же нужно, найти разные значения с одной таблицы, с разных столбцов. Буду очень благодарен, спасибо!)
Озадачили. Обычно строка в таблице объединяет набор полей, потому пробовал бы склеить три значения и искать по полнотекстовому (для примера из доков 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 ... | +----+--------+------------------------------------------+
Полнотекстовый индекс перестаёт учитываться на старых записях или на новых? Если речь о структуре таблицы, то при копировании SQL-кода таблиц базы надо проверить входить ли индекс в код
Всё хорошо! Но немного не хватает информации о: 1) Типе данных TEXT 2) Когда стоит использовать такой тип индексов и когда нет 3) Да и вообще интересно узнать как выглядит full-text index таблица, знаю, например, что при обычных индексах это дополнительная "таблица" с сортированными значениями (для бинарного поиска) и указателями, классная идея кстати говоря, а вот что интересно, так это как работает для full text'a?
Здравствуйте. Подскажите пожалуйста. я создал таблицу 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' Как её исправить? Заранее спасибо.
Наша таблица стоп-слов должна иметь структуру такую же как и таблица INNODB_FT_DEFAULT_STOPWORD (посмотреть структуру можно desc INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;), то есть содержать только поле value. Попробуйте убрать поле id и повторить запросы
Спасибо большое. Поменял название поля в таблице (word -> value) и убрал поле id, оставил только value, и всё заработало. Спасибо ещё раз. Очень полезная курс.
Создал таблицу `my_stopwords`, insert into-ом добавил слово `теорема`, сделал поиск на это слово и поиск не дал результата ---> всё работает. Добавляю в таблицу `my_stopwords` слово 'Коши', делаю поиск по этому слову ---> результата не должно быть! Но поиск по этому слову выдает мне текст, содержащий это слово, т.е. запрос работает не правильно... Но при удалении и создании нового индекса, запросы на слово `теорема`, `Коши` работают правильно -----> нет результатов, т.е. правильно. Исходя из вышенаписанного (если оно читабельно и понятно изложено), чтобы добавить слово в таблицу стопслов и оно заработало нужно переделывать индекс???P.s.Поправьте меня если неправильно выражаюсь
Жалею, что не посмотрел этот урок раньше 😄 Алексей, спасибо вам большое за то, что вы делаете!
Приятно читать о том, что видео пригодилось) Удачи!
Смотрю уже 16 видео и не собираюсь останавливаться! Лучший курс по MySQL, что есть на RUclips. Даже за 3 года ничего лучше не появилось. Спасибо!
Игорь, спасибо столь высокую оценку работы!
Спасибо большое Вам за урок!!!
Спасибо за урок. Впервые в жизни попробовал и очень доволен. Вот только я бы ещё добавил: в поисковую фразу можно вводить несколько слов через запятую, и поиск выдаст результат по каждому из них. И ещё мне не ясно кое-что: если эта "articles" будет фигурировать в запросе с другой таблицей через Join. Смогу ли я в полнотекстовом поиске указать имя этого запроса?
Рад, что пригодилось.
Полнотекстовый можно использовать и при объединении через join
@@HtmllabRu спасибо
Привет, есть такой вот вопрос. Допустим у меня есть таблица, и в данной таблице, по запросу через поиск, Я хочу найти три разных определённых значений, в данной таблице по столбцам, и вывести эти поля с этими значениями. Как я могу это сделать? Какой запрос мне нужно применить? Я искал более часа в интернете, но везде пишут только про поиск одного значения, мне же нужно, найти разные значения с одной таблицы, с разных столбцов. Буду очень благодарен, спасибо!)
Озадачили. Обычно строка в таблице объединяет набор полей, потому пробовал бы склеить три значения и искать по полнотекстовому (для примера из доков 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 ... |
+----+--------+------------------------------------------+
Подскажите, пожалуйста, почему Fulltext index в таблице удаляется при копировании базы данных через phpmyadmin? =(
Полнотекстовый индекс перестаёт учитываться на старых записях или на новых?
Если речь о структуре таблицы, то при копировании SQL-кода таблиц базы надо проверить входить ли индекс в код
А как проведет себя mysql, если вместо слова "уравнений" передать "уравнение"?
судя по всему пройдет дальше, так как стэмминга нет (насколько я понимаю)
При запросе выдает ошибку ERROR 1191 (HY000): Can't find FULLTEXT index matching the column list
А в запросе в match указываются те же поля, что и в самом индексе? Поля должны совпадать по кол-ву и порядку
Всё хорошо! Но немного не хватает информации о:
1) Типе данных TEXT
2) Когда стоит использовать такой тип индексов и когда нет
3) Да и вообще интересно узнать как выглядит full-text index таблица, знаю, например, что при обычных индексах это дополнительная "таблица" с сортированными значениями (для бинарного поиска) и указателями, классная идея кстати говоря, а вот что интересно, так это как работает для full text'a?
Спасибо) Постараюсь на некоторые вопросы ответить в грядущих видео 👍
Здравствуйте. Подскажите пожалуйста.
я создал таблицу
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'
Как её исправить?
Заранее спасибо.
Наша таблица стоп-слов должна иметь структуру такую же как и таблица INNODB_FT_DEFAULT_STOPWORD (посмотреть структуру можно desc INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;), то есть содержать только поле value. Попробуйте убрать поле id и повторить запросы
Спасибо большое.
Поменял название поля в таблице (word -> value) и убрал поле id, оставил только value, и всё заработало.
Спасибо ещё раз. Очень полезная курс.
Добрый день. У меня вопрос!
Создал таблицу `my_stopwords`, insert into-ом добавил слово `теорема`, сделал поиск на это слово и поиск не дал результата ---> всё работает.
Добавляю в таблицу `my_stopwords` слово 'Коши', делаю поиск по этому слову ---> результата не должно быть! Но поиск по этому слову выдает мне текст, содержащий это слово, т.е. запрос работает не правильно... Но при удалении и создании нового индекса, запросы на слово `теорема`, `Коши` работают правильно -----> нет результатов, т.е. правильно.
Исходя из вышенаписанного (если оно читабельно и понятно изложено), чтобы добавить слово в таблицу стопслов и оно заработало нужно переделывать индекс???P.s.Поправьте меня если неправильно выражаюсь
@@Pacangotoff вы правы, после добавления стопслова нужно обновить (перестроить) индекс