101

Re: Скрипт поиска по сайту на основе Яндекс.XML

master сказал:

почему результаты поиска яндекс.hml и яндекс разные?

Запрос формируется в файле request.php и имеет вид (ищем "mysql" на сайте php-myadmin.ru):

mysql << host:php-myadmin.ru

Если данная конструкция у вас не работает, то попробуйте сформировать что-то свое и добавьте запрос внутрь тега <query>.

102

Re: Скрипт поиска по сайту на основе Яндекс.XML

Hanut сказал:
master сказал:

почему результаты поиска яндекс.hml и яндекс разные?

Запрос формируется в файле request.php и имеет вид (ищем "mysql" на сайте php-myadmin.ru):

mysql << host:php-myadmin.ru

Если данная конструкция у вас не работает, то попробуйте сформировать что-то свое и добавьте запрос внутрь тега <query>.

Результаты выдает, значит наверное работает, только немного ни так.
мне нужен поиск не по сайту а по интернету, поэтому я убрала данные в параметре $aLocal['host'] = ''; в файле config.
может это не правильно и из-за этого возникает такая проблема?

103

Re: Скрипт поиска по сайту на основе Яндекс.XML

master сказал:

нужен поиск не по сайту а по интернету

Для поиска в Интернет, в файле request.php надо заменить этот код:

    $sPost = '<?xml version="1.0" encoding="utf-8"?>' . "\n"
           . '<request>' . "\n"
           .   '<query>' . htmlspecialchars($aLocal['query'])
           .     ' &lt;&lt; ' . $aLocal['host_s'] . '</query>' . "\n"
           .   '<groupings>' . "\n"
           .     '<groupby attr="" mode="flat" groups-on-page="10" docs-in-group="1" />' . "\n"
           .   '</groupings>' . "\n"
           .   '<page>' . $aLocal['page'] . '</page>' . "\n"
           . '</request>';

На этот:

    $sPost = '<?xml version="1.0" encoding="utf-8"?>' . "\n"
           . '<request>' . "\n"
           .   '<query>' . htmlspecialchars($aLocal['query']) . '</query>' . "\n"
           .   '<groupings>' . "\n"
           .     '<groupby attr="" mode="flat" groups-on-page="10" docs-in-group="1" />' . "\n"
           .   '</groupings>' . "\n"
           .   '<page>' . $aLocal['page'] . '</page>' . "\n"
           . '</request>';

Если результаты не будут устраивать, то попробуйте другие параметры группировки, которые указаны в строке:

<groupby attr="" mode="flat" groups-on-page="10" docs-in-group="1" />

Аттрибуты группировок описаны в документации.

104

Re: Скрипт поиска по сайту на основе Яндекс.XML

Здравствуйте!
Спасибо большое за скрипт. Всю сеть сегодня перекопал, но единственный внятный вариант, по крайней мере для людей далеких от программирования. smile Вот только не понятно, как разместить файлы поиска в директории отличной от search? У меня туда перекидывает, хотя все файлы в другой директории находятся.

105

Re: Скрипт поиска по сайту на основе Яндекс.XML

Vision сказал:

Вот только не понятно, как разместить файлы поиска в директории отличной от search? У меня туда перекидывает, хотя все файлы в другой директории находятся.

В файле test.php поправьте параметр action="/search/" на любой желаемый.

106

Re: Скрипт поиска по сайту на основе Яндекс.XML

Hanut сказал:
Vision сказал:

Вот только не понятно, как разместить файлы поиска в директории отличной от search? У меня туда перекидывает, хотя все файлы в другой директории находятся.

В файле test.php поправьте параметр action="/search/" на любой желаемый.

Спасибо. Разобрался чуть раньше вашего ответа. smile Проблема оказалась не в этом. На одном хостинге все работает, на другом нет. Послал запрос в Яндекс, такое ощущение, что проблема с IP. Еще раз спасибо за помощь и очень хороший скрипт!

107

Re: Скрипт поиска по сайту на основе Яндекс.XML

Подскажите пожалуйста, как можно сделать активными ссылки которые идут под текстом содержащим искомое слово.

108

Re: Скрипт поиска по сайту на основе Яндекс.XML

Vision сказал:

Подскажите пожалуйста, как можно сделать активными ссылки которые идут под текстом содержащим искомое слово.

В функции Insert_Search() замените это:

                if (XML_url && XML_url.firstChild) {
                    var oDIV = document.createElement('div');
                    oLI.appendChild(oDIV);
                    oDIV.innerHTML = XML_url.firstChild.data;
                    oDIV.className = 'search_url';
                }

На это:

                if (XML_url && XML_url.firstChild) {
                    var oDIV = document.createElement('div');
                    oLI.appendChild(oDIV);
                    oDIV.className = 'search_url';

                    var oA = document.createElement('a');
                    oDIV.appendChild(oA);
                    oDIV.innerHTML = XML_url.firstChild.data;
                    oA.href = XML_url.firstChild.data;
                    oA.className = 'search_url_a';
                }

Затем создайте в файле search.css оформление для ссылки с именем класса search_url_a.

a.search_url_a {
    color: #5e5e5e;
    text-decoration: underline;
    font-family: Tahoma;
    font-size: 12px;
}
a.search_url_a:hover {
    text-decoration: none;
}

109 (изменено: Vision, 2012-10-20 22:59:43)

Re: Скрипт поиска по сайту на основе Яндекс.XML

Hanut сказал:

В функции Insert_Search() замените это:

Не получается. Ничего не изменилось. На всякий случай уточню свою просьбу. Результаты поиска формируются:
1) Заголовок страницы
2) Текст, который содержит искомый запрос
3) Ссылка на страницу
Вот хочется чтобы третий пункт был активной ссылкой. Как собственно у самого Яндекса сделано.
И вот еще одна просьба. В документации Яндекса есть такое:

<misspell>   
Информация об автозамене запроса, содержащего опечатки. Включает теги source-text и text, содержащие соответственно исходный и исправленный текст запроса. Тег rule содержит тип исправления, примененного к запросу: Misspell, KeyboardLayout.

Можно ли это задействовать тоже?
Да и чуть не забыл. Иногда данные с результами подгружаются не мгновенно, порой бывает задержка в 3-4 секунды. Т.е. вместо результатов просто белая страница, а спустя некоторое, ощутимое время, загружаются результаты. Нельзя ли добавить какой-то индикатор загрузки, вообще любой вариант который будет как-то сообщать что данные скоро появятся. Особо нетерпеливые пользователи начинают жмакать кнопку "обновить" в броузере. smile
Заранее спасибо за помощь.

110

Re: Скрипт поиска по сайту на основе Яндекс.XML

Vision сказал:

Ничего не изменилось.

Нажмите F5 в браузере, чтобы обновить скрипты в кеше, или очистите кеш браузера.

Vision сказал:

<misspell> Можно ли это задействовать тоже?

Как?

Vision сказал:

Нельзя ли добавить какой-то индикатор загрузки

// Функция Search_onsubmit(), Строка:
div.innerHTML = '';
// Замените на:
div.innerHTML = 'Ждите';

Можно выводить вместо текста картинку. На ваше усмотрение.

111 (изменено: Vision, 2012-10-21 11:59:06)

Re: Скрипт поиска по сайту на основе Яндекс.XML

Hanut сказал:

Нажмите F5 в браузере, чтобы обновить скрипты в кеше, или очистите кеш браузера.

Пробовал всё что можно, и другие броузеры. Не получается. search.js ведь надо редактировать было? Но если у Вас работает, то буду проверять еще раз.

Hanut сказал:

Как?

Знал бы как, не спрашивал бы. smile Вы же ведь как-то остальные со страницы http://help.yandex.ru/xml/?id=362990 использовали.

Hanut сказал:

Можно выводить вместо текста картинку.

Поставил текст. Только он же не удаляется после загрузки данных. smile Так и остается на странице с результатами.

P.S. Такое предложение. Может добавите кнопку Donation от paypal или что-то, что Вам удобнее на страницу http://php-myadmin.ru/learning/search.html? Скажу за себя, перевел бы небольшую денежку. Перекопал весь интернет. У Вас самый отличный, да по сути единственный нормально работающих вариант. Понимаю, что делали не из-за денег, но чтобы у людей была возможность отблагодарить.

112

Re: Скрипт поиска по сайту на основе Яндекс.XML

Vision сказал:

Пробовал всё что можно, и другие броузеры.

Поменяйте блок кода, я ошибся.

                if (XML_url && XML_url.firstChild) {
                    var oDIV = document.createElement('div');
                    oLI.appendChild(oDIV);
                    oDIV.className = 'search_url';

                    var oA = document.createElement('a');
                    oDIV.appendChild(oA);
                    oA.innerHTML = XML_url.firstChild.data;
                    oA.href = XML_url.firstChild.data;
                    oA.className = 'search_url_a';
                }
Vision сказал:

Знал бы как, не спрашивал бы.

Вы хоть объясните как это использовать и куда засунуть.

Vision сказал:

Только он же не удаляется после загрузки данных.

// В функции Insert_Search() после строки:
var div = document.getElementById('search_div');
// Добавьте:
div.innerHTML = '';
Vision сказал:

Может добавите кнопку Donation от paypal

Спасибо за предложение, но на данный момент это не актуально. Пожертвования на поддержание и развитие проекта принимаются на реквизиты указанные на данной странице:
http://php-myadmin.ru/contacts/consultation.html

113

Re: Скрипт поиска по сайту на основе Яндекс.XML

Hanut сказал:

// В функции Insert_Search() после строки:
var div = document.getElementById('search_div');
// Добавьте:
div.innerHTML = '';

Не работает. smile Да и ладно. Не удобно Вас уже терзать.

114

Re: Скрипт поиска по сайту на основе Яндекс.XML

Vision сказал:

Не работает.

Не понимаю что там может не работать.

115

Re: Скрипт поиска по сайту на основе Яндекс.XML

Hanut сказал:

Не понимаю что там может не работать.

Ну так текст просто на страницы с результатами поиска висит и все. smile Выглядит забавно, результаты поиска появились и при этом надпись "идет загрузка данных, пожалуйста подождите".
Пробовал знакомых тестировать, у одного из тестеров почему то иногда пустая страница загружается. В смысле результаты не выводятся. Приходится нажимать на кнопку поиск. Бывает редко, в старой Опере было часто, в новой пока один раз зафиксировано. У меня вообще не воспроизводится.

116

Re: Скрипт поиска по сайту на основе Яндекс.XML

Vision сказал:

Ну так текст просто на страницы с результатами поиска висит и все.

Покажите код, который вы меняли.

117

Re: Скрипт поиска по сайту на основе Яндекс.XML

function Insert_Search(oXMLDoc) {
    var div = document.getElementById('search_div');
    div.innerHTML = 'Ждите';

Дальше по тексту.

118

Re: Скрипт поиска по сайту на основе Яндекс.XML

Vision сказал:

Дальше по тексту.

Я же пустую строку давал.
div.innerHTML = '';

А текст ожидания пишется в функции Search_onsubmit().

119

Re: Скрипт поиска по сайту на основе Яндекс.XML

Hanut сказал:

А текст ожидания пишется в функции Search_onsubmit().

Я тормоз.  big_smile Теперь все работает. Написал в Яндекс, по поводу <misspell> Но видимо я не понял что спросить у них, поэтому ответ врядли поможет.

В <misspell> приходит информация об автозамене.
http://help.yandex.ru/xml/?id=362990

Есть хотите посмотреть живой пример - сделайте XML-запрос с опечаткой и проверьте содержимое <misspell>, так будет яснее. А как использовать информацию - решать Вам.

Подскажите пожалуйста, что у них спросить, чтобы Вы поняли, как это можно задействовать в вашем скрипте.

120

Re: Скрипт поиска по сайту на основе Яндекс.XML

Vision сказал:

Подскажите пожалуйста, что у них спросить, чтобы Вы поняли, как это можно задействовать в вашем скрипте.

Если даже вы не знаете как это задействовать, то я тем более.

121

Re: Скрипт поиска по сайту на основе Яндекс.XML

Hanut сказал:

Если даже вы не знаете как это задействовать, то я тем более.

Поясните пожалуйста, что значит "задействовать"? Я знаю как это работает, в плане результата. Если введен ошибочный запрос, к примеру програмист, вместо программист, то запрос исправится на верный автоматически. Как внутри кода используется, я конечно же не знаю.

122

Re: Скрипт поиска по сайту на основе Яндекс.XML

Vision сказал:

к примеру програмист, вместо программист, то запрос исправится на верный автоматически

Исправилось, и что дальше? Что мне с этим делать? Как выводить? Как задействовать?

123 (изменено: Vision, 2012-11-01 14:19:24)

Re: Скрипт поиска по сайту на основе Яндекс.XML

Сегодня вот такое сообщение получил "Произошла программная ошибка". Причем непонятно, все работало, ничего вроде бы не менял.

124

Re: Скрипт поиска по сайту на основе Яндекс.XML

Vision сказал:

Сегодня вот такое сообщение получил "Произошла программная ошибка". Причем непонятно, все работало, ничего вроде бы не менял.

Это означает, что request.php ничего не вернул. Возможно из-за ошибки. Для начала посмотрите журналы веб сервера на предмет ошибок. Если ничего не найдете, то проверьте идут ли запросы на Яндекс.XML. Это можно посмотреть на странице, где вы регистрировали IP.

125

Re: Скрипт поиска по сайту на основе Яндекс.XML

Такое ощущение, если поиском пользуются очень редко, то Яндекс отключает чтоли поиск. Сделал запросов 5 и все нормализовалось. И до это такое замечал. Буду смотреть, сейчас выпускаю поиск из теста, для людей.