X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Допилить код вывода релевантных страниц на основе Яндекс XML
Xstroy
Xstroy
Topic Starter сообщение 12.12.2013, 11:24; Ответить: Xstroy
Сообщение #1


Собственно суть вопроса в следующем:
Есть желание прикрутить к сайту вывод релевантных страниц сайта на основе ранжирования в поиске Яндекса по сайту.
Начало реализации положено smile.gif, но допилить код без достаточных знаний не удаётся.

Исходник нашёл в сети (free-ishodniki.ru/src-php/ya-xml.php), чуть попытал его методом научного тыка, кое-что убрав:

<form method='POST' accept-charset='utf-8'>
<input type='text' name='query' id='query' value='<?php print iconv('UTF-8','cp1251',$_REQUEST['query']); ?>' style='width:80%;margin-left:5%'/>
<input type="hidden" name="page" value=0 />
<input type="hidden" name="host" value=''/>
<input type="submit" value="Искать"/>
</form>

<?php

function ya_srch($query,$host)
{
$page  = $_REQUEST['page'];
if (!$page) $page = 0;
$host  = 'www.drevmast.ru';
$ehost = htmlspecialchars($host);
$search_tail = htmlspecialchars(" host:$ehost");
if (!$host) $host = '';
$found = 0;
$out = '';  //30
$esc = htmlspecialchars($query);
if($host=='')
{
$doc = <<<DOC
<?xml version='1.0' encoding='utf-8'?>
<request>
<query>$esc</query>
<page>$page</page>
</request>
DOC;
}
else
{
$doc = <<<DOC
<?xml version='1.0' encoding='utf-8'?>
<request>
<query>$esc $search_tail</query>
<groupings>
<groupby attr="" mode="flat" groups-on-page="5"  docs-in-group="1" />     
</groupings>
<page>$page</page>
</request>
DOC;
}
$context = stream_context_create(array('http' => array('method'=>"POST",'header'=>"Content-type: application/xml\r\n"
."Content-length: " .strlen($doc),'content'=>$doc)));
$response = file_get_contents('ссылка-из-Яндекс-XML', true, $context);
if ($response)
{
$xmldoc = new SimpleXMLElement($response);
$error = $xmldoc->response->error;
$found_all = $xmldoc->response->results->grouping->found;
$found = $xmldoc->xpath("response/results/grouping/group/doc");
if ($error) {$out = "Ошибка: " . $error[0];}
else
  {
  $from=$page * 5 + 1; if(($found_all-$from)>9) $to=$page * 5 + 5;else $to=$found_all;
  $out =  "<h4 align=center>По запросу <font color=green>" .iconv('UTF-8','cp1251',$query) ."</font> <font color=red>Я</font>ндекс нашёл ";
  if($host=='') $out = $out ." в <font color=green>интернете ";
  else $out = $out ." на сайте: <font color=green>" .$host;
  $out = $out ."</font> <font color=red>" .$found_all ."</font> страниц<br>показаны результаы с <font color=red>"
     .$from ."</font> по <font color=red>" .$to ."</font></h4>\n";
  $out = $out ."<ol start='" .($page * 10 + 1) ."'>\n";
  foreach ($found as $item)
   {
   $rez1 = iconv('UTF-8','cp1251',highlight_words($item->title)); // moj kod
   $out = $out . "<li><a href='" .$item->url ."'>" .$rez1 ."</a><br>\n";
   if ($item->passages)
    {
    foreach ($item->passages->passage as $passage)
     {
     $rez2 = iconv('UTF-8','cp1251',highlight_words($passage)); // moj kod
     if($host=='')
     $out = $out . $rez2 ."<br>\n";
     else
     $out = $out . $rez2 ."<br></li>\n";
     }
    }
   if($host=='')
    $out = $out . "<font color=red>» </font><a href='?page=0" ."&query=" .$query ."&host=" .$item->domain
     ."'><b>ещё с сайта:</b></a>  <font color=green>" .$item->domain ."</font></li>\n";
   }
  $out = $out . "</ol>\n";
  $out = $out . print_pager ($found_all,$query,$page,$host);
  }
}
else {$out =  "Внутренняя ошибка сервера.\n";}
return $out;
}

function highlight_words($node)
{
$stripped = preg_replace('/<\/?(title|passage)[^>]*>/','',$node->asXML());
return str_replace('</hlword>','</strong>',preg_replace('/<hlword[^>]*>/','<strong>',$stripped));
}

function print_pager($found_links,$query,$page,$host)
{
$links_on_page = 5;
$query = urlencode($query);

}

if($_REQUEST['query'])
echo ya_srch($_REQUEST['query'],$_REQUEST['host']);

?>


Сейчас для настройки скрипт живёт по адресу http://www.drevmast.ru/remont.php
В данный момент при вводе запроса ответ выводится со 2-5 раза smile.gif
Не смотрим на ошибки кодировки и т.д. Жмакаем кнопку поиск до ответа.


Нужно:
1) Привести в соответствие кодировку. У сайта кодировка windows-1251
2) Убрать лишнее из кода. Постраничный вывод выпилил, но какие-то переменные остались...
3) Настроить, чтобы работало с пол-пинка.

4) Объяснить, как реализовать замену отправки запроса из формы на подстановку фразы ( в идеале бы поисковый запрос из реферера, который скоро отменят) при загрузке любой страницы.

Сразу оговорюсь: базы нет, поэтому варианты с ней не обсуждаются.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Xstroy Полезный сервис: Регионы Гугл
ИКСоМЕР
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыНастройка яндекс директ рекламы БЕЗ РАСХОДОВ БЮДЖЕТА
Количество продаж будет ОГРАНИЧЕННО!
22 ITstaf 4426 23.4.2024, 21:00
автор: 100ftd
Открытая тема (нет новых ответов) Аналоги Яндекс Директ
4 kuz999 1866 23.4.2024, 18:55
автор: xramoviy
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыБыстрая индексация страниц сайта и обратных ссылок - 2Index
39 2Index 6755 22.4.2024, 16:16
автор: 2Index
Открытая тема (нет новых ответов) Atlantic 2.0 - для безлимитного решения кликами Recaptcha и кликовой капчи Яндекс
3 waterworld 1635 14.3.2024, 12:29
автор: waterworld
Открытая тема (нет новых ответов) Нужен сайт с автонаполнением по XML
1 REGNET 1257 7.3.2024, 15:08
автор: REGNET


 



RSS Текстовая версия Сейчас: 26.4.2024, 3:38
Дизайн