Я пытаюсь связать некоторые (десять) предметов с другим.Для выбора предметов у меня есть несколько критериев, которые являются атрибутами моего предмета (скажем, «категория», «размер» и «вес»).Каждый из этих критериев имеет оценку (скажем, 15 для категории, 8 для размера и 3 для веса).
Моя идея найти десять лучших предметов для связи с текущим состояла в следующем:
Получить массив со всеми возможными комбинациями критериев, упорядоченными по баллам.В этом случае у меня должно быть: [['category', 'size', 'weigth'], ['category', 'size'], ['category', 'weight'], ['category'], ['размер ',' вес '], [' размер '], [' вес]] (соответствующие оценки: 26, 23, 18, 15, 11, 8, 3)
Затем сделайте уникальный запрос со всеми комбинациями в порядке с СОЮЗОМ между каждой комбинацией и пределом 10 в конце.Запрос sql будет выглядеть примерно так:
(Select *
From items
Where category = "food"
and size = "3"
and weight = "7")<br />
UNION <br />
(Select *
From items
where category = "food"
and size = "3")<br />
UNION<br />
(.....)<br />
limit 10;
Я проверил этот запрос, и, похоже, он работает хорошо.Идея состоит в том, что важные запросы являются первыми, поэтому результаты первых запросов находятся в самом верху, а предел 10 просто сохранит наиболее релевантные результаты.Но, говоря о том, что у меня есть некоторые сомнения, он может работать с другой базой данных (он работает на MySQL, но я не уверен, что он будет работать с PostGreSQL).Что вы думаете об этом?
- И это все, что я могу связать результаты с моим текущим элементом.
Моя проблема в первом пункте, я не знаюкак получить этот упорядоченный массив со всеми комбинациями критериев.
Если у вас есть идея, я возьму ее ^^
Заранее спасибо.