MySQL поисковая тактика - PullRequest
       7

MySQL поисковая тактика

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

Я выполняю поиск по своему проекту, требования:

  • ключевые слова могут быть найдены в двух столбцах ( теги & заголовки ) из разныхтаблицы
  • # 1 поиск теги для точного соответствия
  • , если пуст, 2 # поиск теги с использованием функции MySQL SOUND LIKE
  • если пусто, 3 # для каждого поиска слова заголовков с использованием LIKE = '% word%'
    • результаты пересекающихся названий

Не 'Я не знаю, поняла ли ты идею.Надеюсь, что так.
Теперь проблема.Я прочитал в книге, что запросы с использованием LIKE и% в начале не будут использовать индексы для ускорения.

Если это правда, моя формула будет работать медленнее, пока теги и заголовки увеличение.

Что бы вы сделали с точки зрения производительности?

Спасибо,

Ответы [ 3 ]

0 голосов
/ 01 марта 2011

Принимая во внимание таблицы MyISAM, вам может потребоваться реализация полнотекстового поиска в качестве альтернативы LIKE.

0 голосов
/ 01 марта 2011

Если вы хотите использовать только две таблицы и выполнять нечеткое сопоставление текста, взгляните на MATCH ... AGAINST. Это будет делать более или менее то, что вы хотите. Но есть некоторые предостережения.

  • FULLTEXT индексы могут быть реализованы только для таблиц MyISAM, но не для INNODB
  • если ваш текст соответствует стандартному распределению слов, ваши результаты могут быть неоптимальными

Если вы хотите выйти за рамки реляционного подхода, индексатор, такой как Solr , может работать для вас.

0 голосов
/ 01 марта 2011

Я думаю, что в любой «линейной» формуле поиска добавление для поиска таких вещей, как ключевые слова / теги, в конечном итоге приведет к замедлению процесса поиска.Разве это не главная проблема с реляционными базами данных?(поправьте меня, если я ошибаюсь)

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