mysql поисковая фраза, использующая совпадения с регистром INsensitive - PullRequest
3 голосов
/ 27 марта 2011

Чтобы задать вопрос, mysql doc гласит:

строки в кавычках в предложении Match / Against чувствительны к регистру ...

Мои данные:

INSERT INTO table.col VALUES ('this is a custom phrase to match');

Мой запрос:

SELECT * FROM table
WHERE MATCH ( col1,..,col10 ) AGAINST ('"Custom Phrase"' IN BOOLEAN MODE)  

Это не соответствует регистру.


Я ищу способ использовать этот запрос без учета регистра

Что-то, где все эти фразы будут соответствовать данным:

  • "Пользовательская фраза"
  • "Пользовательская фраза"
  • "ТАМОЖЕННАЯ ФРАЗА"
  • "Фраза CuStOm"

Любая помощь приветствуется, заранее спасибо ^^

Ответы [ 3 ]

2 голосов
/ 27 марта 2011

Прочитайте конец этого (http://bugs.mysql.com/bug.php?id=22343), который говорит, что это заведомо, потому что вы смешали разные типы столбцов.

Если вам нужно искать по столбцам, преобразуйте их все (включая определение параметров сортировки во времяпреобразование) в типы текста в левой части MATCH.

1 голос
/ 30 марта 2011

Спасибо за вашу помощь

Поскольку я столкнулся с другой проблемой, связанной с полнотекстовыми индексами, которые не могут содержать более 16 столбцов (в то время как мне нужно сопоставить 33 столбца), я решил использовать другой способ:

(решение, которое часто встречается, когда речь идет о полнотекстовом поиске)

  1. Я объединяю все столбцы строки в строку, которую я преобразую в нижний регистр.

  2. Я сохраняю эту строку во вновь добавленном столбце (типа longtext, с полнотекстовым индексом), который предназначен исключительно для этого поиска FT и обновляется после каждого запроса вставки / обновления.

  3. Теперь мне нужно передать строчные термины в предложение ПРОТИВ, используя БУЛЕВЫЙ РЕЖИМ.Со всеми данными в нижнем регистре поиск с учетом регистра больше не является проблемой.

    SELECT * FROM table WHERE MATCH (longtextcol) ПРОТИВ («строчная фраза» lowercaseword1 lowercaseword2 ')

Спасибо за ваши ответы ^^

1 голос
/ 27 марта 2011

Справочник по MySQL утверждает, что по умолчанию при использовании двоичной сортировки по латинице 1 регистр не учитывается.Похоже, вы также можете использовать функцию сортировки для принудительной установки определенного параметра (без учета регистра или с учетом регистра).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...