denisOg
Новичок
Как сделать сложный поиск. Например, есть много пользователей, у пользователей есть любимые фильмы, и есть много фильмов. У каждого фильма есть теги. Пользователь вводит теги я делаю поиск по фильмам.
Учитывать нужно несколько условий:
Можно конечно сделать обычный реляционный запрос с WHERE и ORDER BY (с кучей LEFT JOIN), но может есть варианты побыстрее.
Один из вариантов решения по сортировки по актерам: есть актеры у фильма, ID которых можно занести в массив, начиная с известных. Например, FILM_ACTORS[1,34,56,7,43,23,45,6]. У пользователя есть любимые фильмы, из актеров которых можно составить массив (актеры, которые попадаются чаще, становятся в начало массива): USER_FAV_ACTORS[3,45,6,43].
Нужно сравнивать эти два массива и отсортировать их по тому, насколько их совпадение близко к началу массива USER_FAV_ACTORS.
Есть какие нибудь мысли, коллеги?
Учитывать нужно несколько условий:
- убрать из поиска те категории, на которые он не подписан.
- Убрать из поиска те фильмы, которые он уже видел.
- …….возможно другие условия.
- с начало те, которые входят в такие же категории, как и любимые фильмы.
- отсортировать так, что бы фильмы с большим числом совпадений по тегам были выше.
- Отсортировать фильмы по их внутреннему рейтингу .
- Взять актеров из любимых фильмов пользователя и отсортировать фильмы в том порядке, где больше всего актеров из его любимых фильмов.
- ………… возможно другие сортировки (на по названию фильма, году выпуску, актеру)
Можно конечно сделать обычный реляционный запрос с WHERE и ORDER BY (с кучей LEFT JOIN), но может есть варианты побыстрее.
Один из вариантов решения по сортировки по актерам: есть актеры у фильма, ID которых можно занести в массив, начиная с известных. Например, FILM_ACTORS[1,34,56,7,43,23,45,6]. У пользователя есть любимые фильмы, из актеров которых можно составить массив (актеры, которые попадаются чаще, становятся в начало массива): USER_FAV_ACTORS[3,45,6,43].
Нужно сравнивать эти два массива и отсортировать их по тому, насколько их совпадение близко к началу массива USER_FAV_ACTORS.
Есть какие нибудь мысли, коллеги?