Оптимизация запросов MySql - PullRequest
       9

Оптимизация запросов MySql

0 голосов
/ 05 января 2010

Вот вам скриншот из моей структуры таблицы:

alt text

На моем сайте у меня есть два поля для поиска, одно для города (ort) и одно для промышленности (branche).

Если я ищу: Frankfurt verschierung , скажем, что в поле для города у меня есть: Франкфурт и в поле для промышленности (branche) у меня есть verschierung он не возвращает никаких результатов, и у меня есть данные в моей базе данных, здесь у вас есть скриншот из данных:

alt text

И вот у вас есть мой sql запрос:

$do = $this->select("*, MATCH(`ort`) AGAINST ('{$plz}') AS score")
           ->where('MATCH(`branche`) AGAINST( ? IN BOOLEAN MODE)', $branche)
           ->order('premium DESC, score');

Какие-нибудь решения?

Обновление:

$do = $this->select("*,MATCH(`branche`,`ort`) AGAINST ('".$branche." ".$plz."') AS score")
    ->where('MATCH(`branche`,`ort`) AGAINST( ? IN BOOLEAN MODE)', $branche.' '.$plz)
    ->order('premium DESC, score');

Теперь, если я ищу те же термины, я получаю некоторые результаты, НО он не отображается правильно, вот вам изображение из результатов поиска:

alt text

Только ПЕРВЫЙ результат является основным, а что с остальными? Почему они там?

1 Ответ

0 голосов
/ 05 января 2010

Мне удалось решить эту проблему с помощью:

$do = $this->select()
           ->where("`ort` LIKE ?",'%'.mysql_escape_string($plz).'%')
           ->where("`branche` LIKE ?",'%'.mysql_escape_string($branche).'%')
           ->order("premium DESC");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...