Задать вопрос
Xrist1An
@Xrist1An
задаю глупые вопросы

MySQL поиск. Какие из моих вариантов наиболее рациональны?

Когда пользователь вводит поисковый запрос я разбираю его по словам, а потом пытаюсь по каждому слову найти соответствие из базы. Вопрос в том, как это рациональнее организовать.

Искать нужно по трем полям; title(тут может быть несколько слов), color(только одно слово), category(только одно слово).

У меня есть следующие идеи:

- создать еще одно поле, в которое скинуть всю информацию из 3ех полей и искать только по этому, 4-му полю, с помощью FULLTEXT.

- То же самое, но искать с помощю LIKE

- Искать одновременно по 3-ем полям LIKE'ом или FULLTEXT'ом.

Думается мне, что первый вариант самый рациональный, но с FULLTEXT'ом плохо знаком. Нужно ли будет приводить данные в этом поле к какому-то стандарту? Можно просто весь текст в кучу с запятыми и прочими знаками?

Спасибо.

P.s. Прошу не предлагать сфинкс и иже с ним.
  • Вопрос задан
  • 345 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя Вадим Шандринов К ответам на вопрос (5)
suguby
@suguby
программист, python, django, mysql, git, hg, linux
По LIKE индексации нет, FULLTEXT позволяет индексировать, но один индекс на таблицу. Так что - ваш первый вариант
создать еще одно поле, в которое скинуть всю информацию из 3ех полей 
и искать только по этому, 4-му полю, с помощью FULLTEXT

но возможности FULLTEXTа очень ограничены, пользователю нужно уметь делать запросы типа +корова и прочее - для него это сложно. Так что все-таки sphinx.
Ответ написан