Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Неправильная фильтрация FULLTEXT в случае выборки только одного поля id / 5 сообщений из 5, страница 1 из 1
10.03.2016, 16:11
    #39189242
magrish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
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
10.03.2016, 16:16
    #39189254
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
Код: 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
10.03.2016, 16:29
    #39189272
magrish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
Такое поведение стало на 5.7 версии. На 5.6 все работает правильно.
...
Рейтинг: 0 / 0
10.03.2016, 16:35
    #39189281
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
magrishТакое поведение стало на 5.7 версии.
Взятой с http://dev.mysql.com/downloads/ ? если нет - то нет и предмета для разговора...
...
Рейтинг: 0 / 0
10.03.2016, 16:47
    #39189294
magrish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильная фильтрация FULLTEXT в случае выборки только одного поля id
Поставил сейчас на голую 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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Неправильная фильтрация FULLTEXT в случае выборки только одного поля id / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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