Вопросы полнотекстового индекса - PullRequest
0 голосов
/ 07 сентября 2011

Я пытаюсь реализовать полнотекстовый поиск в моей базе данных, и у меня возникли проблемы, которые я не знаю, как решить ..

  1. Сначала я использовал alter table при создании полнотекстовых индексов, когда, наконец, он заработал, я не смог найти записи, которые были в таблице до создания индексов. Может ли проблема быть связана с числами? Все они были смешаны с цифрами и буквами.

  2. В любом случае я продолжил, добавил несколько новых записей, а затем создал несколько новых индексов, на этот раз с phpMyAdmin. Теперь у меня все еще была проблема с первыми записями из 1., но новые записи, которые были добавлены до новых индексов, работали нормально. Это не имеет смысла (кроме случаев, когда цифры не разрешены), у кого-нибудь есть идеи?

  3. Продолжая, я начал тестировать еще несколько индексов. И это может быть немного трудно понять, это проще, если вы работали с phpMyAdmin:

    В phpMyAdmin ваши индексы «группируются», если вы создаете их одновременно. Это также случается, когда я использую другие таблицы. Например, допустим, я проиндексировал столбцы с именами и сводками. Теперь я не могу выполнить поиск МАТЧ (имя) ПРОТИВ ('foobar') , но я могу сделать поиск МАТЧ (имя, сводка) ПРОТИВ ('foobar') . Но если я создам еще один индекс, только с именем и сохраню старую «группу индексов», поиски выше будут работать нормально. И, конечно, поиск MATCH (резюме) ПРОТИВ ('foobar') не будет работать. Теперь, почему это? И как мне это исправить? (кроме создания нового набора индексов для каждого возможного поиска, который я хочу сделать)

Хотелось бы получить ответ на этот вопрос! Спасибо

1 Ответ

0 голосов
/ 07 сентября 2011

Для № 1 и № 2 вы должны проверить значение ft_min_word_len .По умолчанию слова короче 4 букв не индексируются, согласно руководству .

Для # 3 это четко документированное ограничение в руководстве по MySQL :

  • Список столбцов MATCH () должен точно соответствовать списку столбцов в некотором определении индекса FULLTEXT для таблицы, если только этот MATCH () не находится в БУЛЕВОМ РЕЖИМЕ.Поиск в логическом режиме может выполняться по неиндексированным столбцам, хотя они могут быть медленными.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...