1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Улучшенный поиск!

Discussion in 'Vii Engine' started by zqz, Jan 10, 2013.

Content Moderators: Adre
  1. zqz Thread starter User


    Offline
    Message Count:
    230
    Likes Received:
    9
    My version of SE:
    3.16
    Подскажите как сделать чтоб в поиске допустим "Аудиозаписи" не показывало одинаковых песен!
    а то 1 песня 10 рас показывается очень так не удобно!

    Кто поможет буду очень благодарен!
  2. bombermen User


    Offline
    Message Count:
    56
    Likes Received:
    7
    Я решил эту проблему. скоро поделюсь.
    сейчас дорабатываю... в том плане что бы в списке всех песен вместо + показывало что эта песня уже есть в вашем плейлисте)))
    zqz likes this.
  3. bombermen User


    Offline
    Message Count:
    56
    Likes Received:
    7
    Запрос в базу:
    Code:
    ALTER TABLE `vii_audio` ADD `copy` INT NOT NULL 
    т.е. мы добавили дополнительное поле. туда будет заносится 0 или 1 (0 пользователь загрузил песню, 1 скопировал данные)

    и При выводе песен выводится все записи. и если 10 людей скопировали к себе песню, то она отобразится 10 раз.
    То есть отфильтруем значения вывода (добавим условие что бы выводил все, кроме где в поле copy не равно 1 )

    в /system/modules/search.php (примерно 62,63,64 строка) меняем критерий поиска на этот код:

    PHP:
        } elseif($type == AND $config['audio_mod'] == 'yes' AND $config['audio_mod_search'] == 'yes'){ //Если критерий поиск "по аудиозаписи"
            
    $sql_query "SELECT SQL_CALC_FOUND_ROWS ".PREFIX."_audio.aid, url, artist, name, auser_id, copy, ".PREFIX."_users.user_search_pref FROM ".PREFIX."_audio LEFT JOIN ".PREFIX."_users ON ".PREFIX."_audio.auser_id = ".PREFIX."_users.user_id WHERE (MATCH (name, artist) AGAINST ('%{$query}%') OR artist LIKE '%{$query}%' OR name LIKE '%{$query}%') and copy !=1 ORDER by `adate` DESC LIMIT {$limit_page}{$gcount}";
            
    $sql_count "SELECT COUNT(*) AS cnt FROM `".PREFIX."_audio` WHERE (MATCH (name, artist) AGAINST ('%{$query}%') OR artist LIKE '%{$query}%' OR name LIKE '%{$query}%') and copy !=1";
    zqz likes this.
  4. zqz Thread starter User


    Offline
    Message Count:
    230
    Likes Received:
    9
    My version of SE:
    3.16
    Не помогло(
    Code:
    //Делаем SQL Запрос в БД на вывод данных
        if($type == 1){ //Если критерий поиск "по людям"
     
     
    $sql_query = "SELECT SQL_CALC_FOUND_ROWS user_id, user_search_pref, user_photo, user_birthday, user_country_city_name, user_last_visit FROM `".PREFIX."_users` WHERE user_search_pref LIKE '%{$query}%' {$sql_sort} ORDER by `user_rate` DESC LIMIT {$limit_page}, {$gcount}";
    $sql_count = "SELECT COUNT(*) AS cnt FROM `".PREFIX."_users` WHERE user_search_pref LIKE '%{$query}%' {$sql_sort}";
     
     
     
     
     
        } elseif($type == 2 AND $config['video_mod'] == 'yes' AND $config['video_mod_search'] == 'yes'){ //Если критерий поиск "по видеозаписям"
            $sql_query = "SELECT SQL_CALC_FOUND_ROWS id, photo, title, add_date, comm_num, owner_user_id FROM `".PREFIX."_videos` WHERE title LIKE '%{$query}%' AND privacy = 1 ORDER by `add_date` DESC LIMIT {$limit_page}, {$gcount}";
            $sql_count = "SELECT COUNT(*) AS cnt FROM `".PREFIX."_videos` WHERE title LIKE '%{$query}%' AND privacy = 1";
        } elseif($type == 3){ //Если критерий поиск "по заметкам"
            $sql_query = "SELECT SQL_CALC_FOUND_ROWS ".PREFIX."_notes.id, title, full_text, owner_user_id, date, comm_num, ".PREFIX."_users.user_photo, user_search_pref FROM ".PREFIX."_notes LEFT JOIN ".PREFIX."_users ON ".PREFIX."_notes.owner_user_id = ".PREFIX."_users.user_id WHERE title LIKE '%{$query}%' OR full_text LIKE '%{$query}%' ORDER by `date` DESC LIMIT {$limit_page}, {$gcount}";
            $sql_count = "SELECT COUNT(*) AS cnt FROM `".PREFIX."_notes` WHERE title LIKE '%{$query}%' OR full_text LIKE '%{$query}%'";
        } elseif($type == 4){ //Если критерий поиск "по сообщества"
            $sql_query = "SELECT SQL_CALC_FOUND_ROWS id, title, photo, traf, adres FROM `".PREFIX."_communities` WHERE title LIKE '%{$query}%' ORDER by `traf` DESC, `photo` DESC LIMIT {$limit_page}, {$gcount}";
            $sql_count = "SELECT COUNT(*) AS cnt FROM `".PREFIX."_communities` WHERE title LIKE '%{$query}%'";
       
     
      } elseif($type == 5 AND $config['audio_mod'] == 'yes' AND $config['audio_mod_search'] == 'yes'){ //Если критерий поиск "по аудиозаписи"
            $sql_query = "SELECT SQL_CALC_FOUND_ROWS ".PREFIX."_audio.aid, url, artist, name, auser_id, copy, ".PREFIX."_users.user_search_pref FROM ".PREFIX."_audio LEFT JOIN ".PREFIX."_users ON ".PREFIX."_audio.auser_id = ".PREFIX."_users.user_id WHERE (MATCH (name, artist) AGAINST ('%{$query}%') OR artist LIKE '%{$query}%' OR name LIKE '%{$query}%') and copy !=1 ORDER by `adate` DESC LIMIT {$limit_page}, {$gcount}";
            $sql_count = "SELECT COUNT(*) AS cnt FROM `".PREFIX."_audio` WHERE (MATCH (name, artist) AGAINST ('%{$query}%') OR artist LIKE '%{$query}%' OR name LIKE '%{$query}%') and copy !=1";
     
     
     
        } else {
            $sql_query = false;
            $sql_count = false;
        }
       
        if($sql_query)
            $sql_ = $db->super_query($sql_query, 1);
    В бд поля добавил!
  5. bombermen User


    Offline
    Message Count:
    56
    Likes Received:
    7
    Вот еще что нужно решить)
    1 пользователь загрузил песню.
    2 пользователь скопировал песню.
    1 пользователь удалил песню, 2 пользователь она есть в списке, но не воспроизводится, т.к. файл удален.

    пути решения,
    1 - пользователь копирует не только путь к файлу, но и сам файл в свою папку (увеличится объем файлов, если 100 чел скопируют 1 песню?) не очень хорошо)
    2 - если пользователь который загрузил удаляет файл... то и удалится с базы песня у других пользователей, т.е. как будто пропало) т.е. критерий удаления из базы где путь к файлу = пути

    я для себя предпочел 2 вариант)
    --- добавлено: Jan 11, 2013 7:33 PM ---
    а ты очистил таблицу? это надо делать на чистую таблицу где хранятся инфа о песнях

    ведь она не отображает где 1 есть))) а то что было добавлено раньше... там везде 0 )) поэтому и двоится)
  6. zqz Thread starter User


    Offline
    Message Count:
    230
    Likes Received:
    9
    My version of SE:
    3.16
    Можно подробней?! как очистить? и останутся ли старые песни?
  7. bombermen User


    Offline
    Message Count:
    56
    Likes Received:
    7
    не останутся песни, если только удалять дубликаты записей по базе опора на url поле в базе и смотря кто загрузил
    изначально надо было исправлять этот баг, прежде загружать песни
  8. zqz Thread starter User


    Offline
    Message Count:
    230
    Likes Received:
    9
    My version of SE:
    3.16
    я все песни удалил с базы и серовно не работает!
  9. bombermen User


    Offline
    Message Count:
    56
    Likes Received:
    7
    покажи скриншот и поля таблицы аудио какие?
  10. zqz Thread starter User


    Offline
    Message Count:
    230
    Likes Received:
    9
    My version of SE:
    3.16
Content Moderators: Adre

Share This Page

All rights reserved SocEngine.ru ©