FULL text поиск Mysql ищет текст внутри текста?

Axel

Client
Регистрация
20.03.2017
Сообщения
123
Благодарностей
6
Баллы
18
Подскажите какой должен быть запрос аналогичный %LIKE% только для FULL text индекса?

SELECT * FROM `table` WHERE MATCH (column) AGAINST ('*text*' IN BOOLEAN MODE)

не работает. Точнее работает, но первая звездочка в
'*text*'
не учитывается. Находит предложения где слово начинается с text.

А нужно чтобы находил
1text1
atexta

тоже.
 

tanichev

Client
Регистрация
14.08.2020
Сообщения
654
Благодарностей
761
Баллы
93
Подскажите какой должен быть запрос аналогичный %LIKE% только для FULL text индекса?

SELECT * FROM `table` WHERE MATCH (column) AGAINST ('*text*' IN BOOLEAN MODE)

не работает. Точнее работает, но первая звездочка в
'*text*'
не учитывается. Находит предложения где слово начинается с text.

А нужно чтобы находил
1text1
atexta

тоже.
используй конструкции IN()
 
  • Спасибо
Реакции: Axel

Axel

Client
Регистрация
20.03.2017
Сообщения
123
Благодарностей
6
Баллы
18
А подскажите где что найти, что-то не гуглится тема :bn:
 

tanichev

Client
Регистрация
14.08.2020
Сообщения
654
Благодарностей
761
Баллы
93

Axel

Client
Регистрация
20.03.2017
Сообщения
123
Благодарностей
6
Баллы
18
Так там числовые значения, а у меня поиск внутри текста. И числа и буквы могут быть, там выборка из текста хешей.
 

tanichev

Client
Регистрация
14.08.2020
Сообщения
654
Благодарностей
761
Баллы
93

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
звездочка в контексте full-texе search работает только после слова т.е text*, но не вначале
если вам нужен аналог *text* пишите просто text без всяких звездочек вначале и конце (если это одно слово)
если под text подразумевается несколько слов, то там уже возможны различные варианты
более подробно все это описано на официальном сайте https://dev.mysql.com/doc/refman/8.0/en/fulltext-boolean.html
 

Axel

Client
Регистрация
20.03.2017
Сообщения
123
Благодарностей
6
Баллы
18

Axel

Client
Регистрация
20.03.2017
Сообщения
123
Благодарностей
6
Баллы
18
Находит предложения где слово начинается с начала.

А нужно чтобы находил в том числе строки где есть
1zennoposter
1zennoposter1
azennoposter
azennopostera
 

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
да, похоже фултекстом так не найти .... видимо придется юзать старый-добрый LIKE (хотя степень его "доброты" под большим вопросом т.к в используя %слово% индекс задействован не будет )
 

Axel

Client
Регистрация
20.03.2017
Сообщения
123
Благодарностей
6
Баллы
18

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
Им запрос выполняется секунд 20 при 100% нагрузке на диск SSD. База на 60 млн. строк. Индекс есть.
Вот такой он старый добрый.
поэтому я и написал что степень его "доброты" под большим вопросом ;-)
что самое обидное что используя LIKE 'слово%' индекс используется, а при %слово% нет
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)