powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
5 сообщений из 5, страница 1 из 1
Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
    #39189242
magrish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mysql Ver 14.14 Distrib 5.7.11
Взят из docker https://hub.docker.com/_/mysql/

Есть таблица

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE `contact` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) unsigned NOT NULL,
  `device_id` bigint(10) unsigned DEFAULT NULL,
  `phone` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `surname` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `contact_unique_pair` (`user_id`,phone,`device_id`),
  FULLTEXT KEY `idx_contact_full_name` (`name`,`surname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;



И одна строка данных
Код: sql
1.
2.
INSERT INTO `contact` (`id`, `user_id`, `device_id`, `phone`, `name`, `surname`) VALUES
(140100, 370100, 150100, '+79000065080002', '3Contact3', NULL);



Почему запрос
Код: sql
1.
SELECT contact.id from contact where  contact.user_id = 370100 and MATCH(contact.name, contact.surname) AGAINST ('+3Contact3*' IN BOOLEAN MODE);



ничего не находит.

При этом тот-же запрос но с SELECT *

Код: sql
1.
SELECT * from contact where  contact.user_id = 370100 and MATCH(contact.name, contact.surname) AGAINST ('+3Contact3*' IN BOOLEAN MODE);



находит строку.
...
Рейтинг: 0 / 0
Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
    #39189254
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
mysql> CREATE TABLE `contact` (
    ->   `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    ->   `user_id` bigint(20) unsigned NOT NULL,
    ->   `device_id` bigint(10) unsigned DEFAULT NULL,
    ->   `phone` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
    ->   `name` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
    ->   `surname` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
    ->   PRIMARY KEY (`id`),
    ->   KEY `contact_unique_pair` (`user_id`,phone,`device_id`),
    ->   FULLTEXT KEY `idx_contact_full_name` (`name`,`surname`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Query OK, 0 rows affected (2.30 sec)

mysql> INSERT INTO `contact` (`id`, `user_id`, `device_id`, `phone`, `name`, `surname`) VALUES
    -> (140100, 370100, 150100, '+79000065080002', '3Contact3', NULL);
Query OK, 1 row affected (0.32 sec)

mysql> SELECT contact.id from contact where  contact.user_id = 370100 and MATCH(contact.name, contact.surname) AGAINST ('+3Contact3*' IN BOOLEAN MODE);
+--------+
| id     |
+--------+
| 140100 |
+--------+
1 row in set (0.09 sec)

mysql> SELECT * from contact where  contact.user_id = 370100 and MATCH(contact.name, contact.surname) AGAINST ('+3Contact3*' IN BOOLEAN MODE);
+--------+---------+-----------+-----------------+-----------+---------+
| id     | user_id | device_id | phone           | name      | surname |
+--------+---------+-----------+-----------------+-----------+---------+
| 140100 |  370100 |    150100 | +79000065080002 | 3Contact3 | NULL    |
+--------+---------+-----------+-----------------+-----------+---------+
1 row in set (0.00 sec)

mysql>



Вывод простой - не бери хрен знает откуда. Особенно когда есть официальный сайт.
...
Рейтинг: 0 / 0
Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
    #39189272
magrish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такое поведение стало на 5.7 версии. На 5.6 все работает правильно.
...
Рейтинг: 0 / 0
Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
    #39189281
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
magrishТакое поведение стало на 5.7 версии.
Взятой с http://dev.mysql.com/downloads/ ? если нет - то нет и предмета для разговора...
...
Рейтинг: 0 / 0
Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
    #39189294
magrish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поставил сейчас на голую ubuntu 14.04 mysql версии 5.7 через apt репу

Код: sql
1.
echo "deb http://repo.mysql.com/apt/ubuntu/ trusty mysql-5.7" > /etc/apt/sources.list.d/mysql.list



Тоже поведение.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]