Полнотекстовый поиск MySQL не соответствует

Моя таблица MySQL не возвращает результаты с MATCH (col) AGAINST ('') запрос.

Таблица проста:

id | url | fullTextIndex

И мой запрос

SELECT *, Match(fullTextIndex) AGAINST ("7f7f7f807f8080807f8080807f7f7f807c828888808a86967e8b858d7f89838a76829e958f7badb68084a3a38384899077848b877f799f9c85799fa2827d8c8a ") FROM Pictures;

Последний столбец, match, всегда равен 0. Кроме того, я точно знаю, что приведенная выше строка дословно содержится в одном из значений.

Что следует отметить:

  • Строка находится только в этой строке (поэтому она находится не более чем в 50% строк, поэтому ее не следует игнорировать).
  • Это не полная стоимость
  • Столбец представляет собой столбец с большим текстом
  • Когда я использую INSTRЯ получаю значение 1 (это правильно)

Есть идеи, почему этот запрос может не работать?

1 ответ

Решение

Кажется, существует (настраиваемое) верхнее ограничение длины слов, рассматриваемых для индексации:

http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html

Вы можете проверить текущее значение с SHOW VARIABLES LIKE "ft_max_word_len";

На моем сервере возвращается 84, а ваша строка длиной 128 символов.

Предлагаемое исправление:

  1. Добавьте эту строку в ваш файл my.cnf: ft_max_word_len=128 (или любую максимальную длину, которая вам нужна)

  2. Перестройте ваши индексы в соответствии с рекомендациями на веб-сайте MySQL: REPAIR TABLE tbl_name QUICK;

Другие вопросы по тегам