Модифицированный поиск строки в Mysql Table - PullRequest
0 голосов
/ 22 августа 2011

У меня есть строковый запрос для поиска (в качестве примера предполагается, что «это мой первый запрос»).

И у меня также есть таблица, которая состоит из (id, title, rating, ...) атрибутов.

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

Но что, если полного текста, т. Е. «Это мой первый запрос», не будет, тогда не будет результатов, если мне все равно нравится

SELECT * FROM test WHERE title LIKE '%$query%';

То, что я пытаюсь думать дальше, - это запустить другой запрос с меньшим количеством символов на этот раз ... т.е. я буду запускать тот же запрос, используя строку поиска "это мой первый запрос" (урезан у) и так далее, пока не получу мое желаемое нет. результатов.

Но моя проблема:

  1. Это очень дорогостоящая операция
  2. Я хочу, чтобы данные поиска сортировались в порядке убывания значения рейтинга (другое поле в таблице "test")

Пожалуйста, помогите мне, как я могу продолжить это?

1 Ответ

1 голос
/ 22 августа 2011
  1. Добавить индекс в это поле и запустить запрос в цикле. Мне это не нравится.
  2. Использовать полнотекстовый поиск http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.htm в mysql.
  3. Используйте автономный поисковый сервер, такой как Sphinx http://sphinxsearch.com/
...