приоритезация MySQL v5.6 результатов - PullRequest
0 голосов
/ 26 марта 2020

PHP 7.3 / MySQL v5.6 Многозапрос MyISAM использует BOOLEAN MODE:

У нас есть множество музыкальных инструментов в базе данных. Мы хотели бы вернуть список всех гитар и расставить приоритеты для красных или белых гитар в верхней части результата.

Основываясь на определении оператора тильды, мы подумали, что это может быть правильный подход. К сожалению, с запросом ...

~guitar red white

... результаты включают все инструменты, а не только гитары. Похоже, что «шумовые слова» (в определении) означают, что слово помечено как не относящееся к поисковому запросу. Результат аналогичен отправке red white. Не уверен в ценности этого.

Мы попробовали некоторые другие идеи ...

~(+guitar) red white  // also throws out "guitar."

+(~guitar) red white  // matches nothing, I guess because we're matching a noise word.

+guitar >(red white) // matches all guitars and doesn't do anything with red or white.

+guitar (>red >white) // same as above.

+guitar +(red white) // matches only guitars that are red or white

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

Конечно, есть простое решение?

Кстати, мы используем ORDER BY id DES C поэтому последние идентификаторы идут первыми, но мы хотим, чтобы поисковые запросы имели приоритет. В идеале результаты должны показывать новейшие красные гитары, новейшие белые гитары и, наконец, остальные гитары от самых последних до самых ранних.

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