Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Тема закрыта
1

Похожие материалы

Сашка_из_Шебекино

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Мар 2011
#1
Со идее Ater сделал вывод похожих материалов. Поиск осуществляется по ключевым словам. Показываются материалы из статей, файлов и новостей.



Создайте в SQL поля:
Code:
ALTER TABLE `search_index` ADD `title` TEXT NOT NULL;
ALTER TABLE `search_index` ADD `tags` TEXT NOT NULL;

потом распакуйте архив... лучше сравните с вашими файлами
http://dl.dropbox.com/u/60020707/relmat.7z

также немного изменяется алгоритм модуля поиск - теперь создаётся по одной записи на материал и можно легко добавить метку, выводящую титлу материала

Добавлено2012.03.16 21-29

хотелось бы видеть в сборке

Добавлено2012.03.16 21-36

не забудьте после установки почистить кэш индексированных файлов. Удалите /sys/tmp/search/meta.dat

Отредактировано автором 16 Мар 2012

vladevakz

  • Атомовед
  • Юзер
  • 179
  • Репутация:2 
  • Предупреждения: 0 
  • Регистрация:
    6 Фев 2012
#2
Привет отличная работа.
А это можно ставить на любую версию?

Добавлено2012.03.16 22-33

Походу к 1.3 не идет я быстро глянул выдает ошибку После завтра буду разбератся.
А ты не можешь отдельно код выложить какой функционал ты в модули добавил?

Сашка_из_Шебекино

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Мар 2011
#3
vladevakz пишет:
Привет отличная работа.
спасибо

vladevakz пишет:
А это можно ставить на любую версию?
да, но надо сравнить файлы, чтобы добавилось только моё дополнение

vladevakz пишет:
А ты не можешь отдельно код выложить какой функционал ты в модули добавил?
в модули кроме поиска. в функцию view перед $html = $this->_replaceMarkets($markets, $html);
Code:
$resultsnrel = $this->_search($result);
        if (count($resultsnrel) < 1) {
                    $markets['{RELMAT}'] = '';
        } else { 
                $fgh =  'Возможно, вас заинтересует:<br>';
                foreach ($resultsnrel as $result0) {
                    $marketsrel = array();
                    $templrel = $this->Parser->getAndParse('relmat.html');
                    $title = $result0['title'];
                    $entry_url = get_url('/' . $result0['module'] . $result0['entity_view'] . $result0['entity_id']);
                    $marketsrel['{ENTRY_URL}'] = $entry_url;
                    $marketsrel['{TITLE}'] = $title;
                    $fgh .= $this->_replaceMarkets($marketsrel, $templrel);
                    $markets['{RELMAT}'] = $fgh;
                }
        }

и в самый конец перед
}
?>


Code:
function _search($result) {
        $str = $result['tags'];
        $words = explode(', ', $str);
        $_words = array();
        foreach ($words as $key => $word) {
            $_words[] = $word;
        }
        $string = resc(implode('* ', $_words) . '*');
        //query
        $limit = '5';
        $idmat = $result['id'];
        $resultsrel = $this->DB->query("
            SELECT * FROM `" . $this->DB->getFullTableName('search_index') . "`
            WHERE MATCH (`index`) AGAINST ('" . $string . "' IN BOOLEAN MODE) + MATCH (`tags`) AGAINST ('" . $string . "' IN BOOLEAN MODE) AND module != 'forum' AND entity_id != '$idmat'
            ORDER BY MATCH (`index`) AGAINST ('" . $string . "' IN BOOLEAN MODE) AND MATCH (`tags`) AGAINST ('" . $string . "' IN BOOLEAN MODE) DESC LIMIT " . $limit);
        return $resultsrel;
    }


потом в модуле поиска: (вывод команды diff)
260c260
< foreach ($rec as $key => $field) {
---
> foreach ($rec as $field) {
264,274c264
< if (empty($text) || mb_strlen($text) < $this->minInputStr || $key === 'title' || $key === 'tags' || $key === 'download' || $key === 'description' || $key === 'download_url' || $key === 'download_url_size' || $key === 'sourse' || $key === 'sourse_email') continue;
<
< if($table == 'posts'){
< $rec_id_theme = $rec['id_theme'];
< $inf_theme = $this->DB->select('themes', DB_FIRST, array('cond' => array('id' => $rec_id_theme)));
< $inf_theme = $this->Parser->quoteTags($inf_theme[0]);
< $title = $inf_theme['title'];
< } else {
< $title = $rec['title'];
< }
< $tags = '';

---
> if (empty($text) || mb_strlen($text) < $this->minInputStr) continue;
285d274
< $tags = $rec['tags'];
290d278
< 'title' => $title,
297d284
< 'tags' => $tags,

Отредактировано автором 17 Мар 2012

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#4
круто. Как освобожусь от текущих танцев вокруг фапоса, глуну что тут к чему. Скорее всего будет в сборке.

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Сашка_из_Шебекино

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Мар 2011
#5
Вот новая тема, эту закрываю

1
Сейчас online: 89. Зарегистрированных: 2. Гостей: 87.