Автоматические теги

SocMaster

Профессор
Регистрация
26 Июл 2011
Сообщения
211
Реакции
49
У меня в движке реализована функция автоматических тегов. Но что б получить теги скрипт стучит на китайский сервер:conf:
Естественно русские теги я не получаю, только англ и китай
Ищу скрипт автоматической выборки тегов
Вот код где стучит, может что еще придумать можно?
PHP:
if(!$_G['setting']['headercharset']) {
    @header('Content-Type: text/html; charset='.CHARSET);
}
$_G['inajax'] = 1;
 
$subjectenc = rawurlencode(strip_tags($_GET['subjectenc']));
$messageenc = rawurlencode(strip_tags(preg_replace("/\[.+?\]/U", '', $_GET['messageenc'])));
$data = @implode('', file("http://keyword.discuz.com/related_kw.html?title=$subjectenc&content=$messageenc&ics={$_G[charset]}&ocs={$_G[charset]}"));
 
if($data) {
    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
    xml_parse_into_struct($parser, $data, $values, $index);
    xml_parser_free($parser);
 
    $kws = array();
 
    foreach($values as $valuearray) {
        if($valuearray['tag'] == 'kw' || $valuearray['tag'] == 'ekw') {
            if(PHP_VERSION > '5' && CHARSET != 'utf-8') {
                $kws[] = diconv(trim($valuearray['value']), 'utf-8');
            } else {
                $kws[] = trim($valuearray['value']);
            }
        }
    }
 
    $return = '';
    if($kws) {
        foreach($kws as $kw) {
            $kw = dhtmlspecialchars($kw);
            $return .= $kw.' ';
        }
        $return = trim($return);
    }
 
    showmessage($return, '', array(), array('msgtype' => 3, 'handle' => false));
} else {
    showmessage(' ', '', array(), array('msgtype' => 3, 'handle' => false));
}
PHP:
if($tid = @intval($_GET['tid'])) {
    $data = C::t('forum_post')->fetch_threadpost_by_tid_invisible($tid);
    $subject = $data['subject'];
    $message = cutstr($data['message'], 500, '');
    $pid = $data['pid'];
} else {
    $subject = $_GET['subjectenc'];
    $message = $_GET['messageenc'];
}
 
$subjectenc = rawurlencode(strip_tags($subject));
$messageenc = rawurlencode(strip_tags(preg_replace("/\[.+?\]/U", '', $message)));
$data = @implode('', file("http://keyword.discuz.com/related_kw.html?ics=".CHARSET."&ocs=".CHARSET."&title=$subjectenc&content=$messageenc"));
 
if($data) {
 
    if(PHP_VERSION > '5' && CHARSET != 'utf-8') {
        require_once libfile('class/chinese');
        $chs = new Chinese('utf-8', CHARSET);
    }
 
    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
    xml_parse_into_struct($parser, $data, $values, $index);
    xml_parser_free($parser);
 
    $kws = array();
 
    foreach($values as $valuearray) {
        if($valuearray['tag'] == 'kw' || $valuearray['tag'] == 'ekw') {
            $kws[] = !empty($chs) ? $chs->convert(trim($valuearray['value'])) : trim($valuearray['value']);
        }
    }
 
    $return = '';
    if($kws) {
        foreach($kws as $kw) {
            $kw = dhtmlspecialchars($kw);
            $return .= $kw.',';
        }
        $return = dhtmlspecialchars($return);
    }
    $return = substr($return, 0, strlen($return)-1);
 
    if(!$tid) {
        $_G['inajax'] = 1;
        include template('forum/relatekw');
    } elseif($kws) {
        loadcache('censor');
        C::t('forum_post')->update('tid:'.$_G['tid'], $pid, array(
            'tags' => implode(',', $kws),
        ));
    }
}
Пожалуйста помогите..

Подкиньте хотя бы скрипт подборки ключевиков
 
Подкиньте хотя бы скрипт подборки ключевиков
Для J1.5 я использую плагин Add Keywords 0.8RC3 Для просмотра ссылки Войди или Зарегистрируйся
У него собственный алгоритм подбора ключевиков основанный на парсинге статьи при её сохранении и выборе наиболее часто встречающихся слов/словосочетаний.
 
Для J1.5 я использую плагин Add Keywords 0.8RC3 Для просмотра ссылки Войди или Зарегистрируйся
У него собственный алгоритм подбора ключевиков основанный на парсинге статьи при её сохранении и выборе наиболее часто встречающихся слов/словосочетаний.
Ехх, не получается адаптировать, там какой то другой стиль кода
Может выделите код который отвечает уже за генерацию? А то там много лишнего, я с джумлой не работал
 
Для J1.5 я использую плагин Add Keywords 0.8RC3 Для просмотра ссылки Войди или Зарегистрируйся
У него собственный алгоритм подбора ключевиков основанный на парсинге статьи при её сохранении и выборе наиболее часто встречающихся слов/словосочетаний.

Это скорее вредный совет, код в плагине довольно сложен для понимания начинающим кодером, а не начинающий такого вопроса и не задаст...

Ехх, не получается адаптировать, там какой то другой стиль кода
Может выделите код который отвечает уже за генерацию? А то там много лишнего, я с джумлой не работал
За генерацию ключей отвечает функция generateKeywords, примерный алгоритм которой таков:
Чистим текст статьи от знаков препинания, коротких слов, слов из блеклиста, предлогов (из массива на 782 строке, например, a, about, above, across, after, afterwards).
преобразуем все символы текста в маленькие буквы strtolower
разбиваем текст по пробелу $textArray = explode(" ", $text);
подсчитываем количество слов $textArray = array_count_values($textArray);
сортируем по убывающей arsort($textArray);
и берём из полученного массива столько первых слов, сколько нам надо кеев (цикл на строке 1060, который обрывается, когда достигнуто желаемое количество if($i > $this->addkeyParams->keyCount) )
 
мне в этом случае вообще кажется, что стоит сделать свой хендлер (на пхп) который будет принимать на вход два параметра $_GET : title, content
и далее (использовав локальную базу) ищет по ключам запись, которая соответствует тайтлу и контенту, и в ответ отдаёт xml в нужном виде.
если же таких ключей нет в базе, лезем на их сервер, достаём ответ, парсим (ели нужно) и записываем к себе в базу. Таким образом, через некоторое время в базе насобирается достаточное количество инфы, которую можна будет использовать. т.е., руссифицировать.
 
если тебе это как либо поможет
Для просмотра ссылки Войди или Зарегистрируйся
можна и так: Для просмотра ссылки Войди или Зарегистрируйся
выдаёт
Код:
<?xml version="1.0" encoding="utf-8" ?>
<total_response>
    <svalid>36000</svalid>
    <keyword>
    <info>
        <count>2</count>
        <errno>0</errno>
        <nextuptime>1291287160</nextuptime>
        <keep>0</keep>
    </info>
    <result>
        <item>
            <kw><![CDATA[long]]></kw>
        </item>
        <item>
            <kw><![CDATA[content]]></kw>
        </item>
    </result>
    </keyword>
</total_response>
тоесть, ответный формат приблизительно такой.
линки на косоглазый сервер у тебя в двух примерах идентичны, да и набор параметров тот же.

и кажется русский оно ни в зуб ногой :crazy:
 
если тебе это как либо поможет

выдаёт
Код:
<?xml version="1.0" encoding="utf-8" ?>
<total_response>
    <svalid>36000</svalid>
    <keyword>
    <info>
        <count>2</count>
        <errno>0</errno>
        <nextuptime>1291287160</nextuptime>
        <keep>0</keep>
    </info>
    <result>
        <item>
            <kw><![CDATA[long]]></kw>
        </item>
        <item>
            <kw><![CDATA[content]]></kw>
        </item>
    </result>
    </keyword>
</total_response>
тоесть, ответный формат приблизительно такой.
линки на косоглазый сервер у тебя в двух примерах идентичны, да и набор параметров тот же.

и кажется русский оно ни в зуб ногой :crazy:
Это Я знаю, мне нужна система генерации тегов
 
Назад
Сверху