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

$q = preg_replace("/[^а-яА-Я\d\w\s]/iu", "", $q);

А как же кавычки? Как же ключевые + — в запросе?
UFO landed and left these words here
Видимо потому, что буква Ё имеет диакритические символы, расширяющие основной кириллический алфавит. А коды всех символов с диакритикой, надстрочными и подстрочными символами, специфичные для разных вариантов алфавитов кириллицы (как и в других алфавитах) обычно расположены после общеупотребительных символов.
UFO landed and left these words here
> Видимо потому, что буква Ё имеет диакритические символы, расширяющие основной кириллический алфавит

видимо, в большинстве кириллиц буква Й все-таки присутствует, в отличие от бухвы Ё
Нет, это даже не потому что Екатерина 2 ввела эту тупую букву, которой практически никто не пользуется на манер немецких буковок с точечками.
Проблемы с ней потому, что она по кодам символов не входит в диаппазон а-я, в котором все буквы идут по порядку возрастания их кодов.
UFO landed and left these words here
Если у вас там включен режим юникода то почему бы не использовать вместо \d \w \s эквиваленты для юникода \pN \pL \pZs (http://ru2.php.net/manual/en/regexp.reference.unicode.php) ну и с буквами возиться не придется.
Не штудировал даже этот ман, надо будет ознакомиться, спасибо.
Что то не прийдет в голову символ, который может в итоге помешать запросу. Думаю яндекс сам отфильтрует что не нужно.
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
используйте Яндекс.Сервер. как вариант если хочется использовать их поиск без ограничений.
UFO landed and left these words here
За 1000, но не рублей и не в год можете купить у яндекса неограниченное кол-во запросов :) Одно время баловался покупал. Потом понял что смысла нет, Google «номер один» везде.
Гугл конечно №1, но в последнее время его тоже всякой гадостью замусорили, не всегда резулльтаты поиска радуют :( У гиганта и проблемы гигантские, что поделать

Кстати, ещё у Bing-а есть халявные поисковые интерфейсы (XML, JSON). Жаль, что сам бинг очень «зелёный»…
В этом случае можно попробовать воспользоваться site.yandex.ru, который специально для этого предназначен.
Настоящее ограничение количества запросов не применяется в отношении сайтов, подключенных к Рекламной сети Яндекса согласно договору с Яндексом, предусматривающему возможность использования Сервиса.

Для меня это новость. Я почему-то раньше думал что тут как у гугла для снятия ограничения нужно платить o_O Хотя чуть ниже говорят, что и за деньги можно

Хм, ещё один повод использовать Яндекс.Директ :) Спасибо автору, Вы мне раскрыли глаза )
Эту проблему можно решить: просто написать в саппорт (мыло можно найти в xml.yandex.ru) чтобы они увеличили тебе лимит, если это конечно необходимо.
Ага, хабраэффект, однако =) Все хотят попробовать. Теперь только после полуночи по Москве можно будет снова безболезненно пользовать поиск.
Надо ставить sphinx, решение с яндексом имеет недостатки: неполная индексация, долгая индексация, лимит запросов.
Ищу хороший поиск по сайту, в данный момент использую яндекс.сервер, в связи с этим вопрос: sphinx умеет индексацию не по базе, а именно по сайту? Потому что есть просто html-страницы
Он умеет индексировать также и xml документы, коими являются правильные html страницы. Но вот непонятно зачем искать по страницам сайта, если они формируются из данных базы.
На дворе XXI век, а люди всё ещё пишут на чистом HTML?
Зачем?
Когда контент статичен, я бы спросил про бекенд: зачем?
Визитка, например. По ней поиск, конечно, не нужен, но «чистый HTML» тут — то, что надо.
С этим согласен.
Визитки/заглушки делаются статикой.
Но тогда при чем здесь поиск? :)
Спросите у Opera. Насколько помню, у них чистый html на бекендах…
Аналогично, используем sphinx очень удобное API, до этого аспсёрч использовали и яндекс.серч (не xml) со всеми вытекающими последствиями. А sphinx потихонечку себе подключается к slave mysql серверу и посасывает данные не нагружая систему.
Толку от яндекс поиска если он не все страницы сайта индексирует.
Очень глючный поиск, долгое время отклика, не все страницы сайта в индексе, частое отсутствие релевантности в результатах, частые проблемы с кодировкой.

Часто так бывает, если результатов отвечающих запросу нет на сайте, выдаются левые сайты конкурентов.
Зачем отдавать свой траф конкурентам?

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

> Часто так бывает, если результатов отвечающих запросу нет на сайте, выдаются левые сайты конкурентов.
Зачем отдавать свой траф конкурентам?

А я все думал, что это с моей стороны где-то ошибка. Никак не мог понять почему в поиск лезут левые сайты…
Вообще есть еще поиск Quintura по сайту — affiliates.quintura.com/
Недостаток только один — надо подождать пока сайт проиндексится.

Плюс в том, что можно получить персональную помощь и настройки поиска от службы поддержки. Недавно для КТ сделали поиск по сайту — quintura.computerra.ru/ — по одному запросу можно поискать на каждом из сайтов КТ. Кстати так же можно сделать вкладки поиска по разным разделам одного сайта.

И да, я из Quintura, поэтому можете покидать в меня камни.
относительно жирных бидов, тут ты не прав.
Насколько я понимаю яха и гугл, всегда пытаются показать нормальную рекламу (подороже)
UFO landed and left these words here
Вообще-то нормальные вебмастера не ленятся делать нормальный поиск по своему сайту.
Решения со сторонними поисковыми машинами вообще считаю дикостью.
Во-первых не все страницы могут быть в индексе.
Во-вторых действительно сравнительно большое время отклика.
В-третьих это просто несолидно.
Собственно, об этом всём было сказано в комментариях выше.
Вы знаете, ничего не хочу сказать о поиске от Я и Г, но несолидным на мой взгляд получается как раз тот поиск, который сделали сами, не поленились, но им ничего невозможно найти. Было у меня как-то это на сайте МТС, у них свой поиск без учета словоформ сделан был (как сейчас — не знаю). Ну и толку от него?
Значит поленились. :)
Есть проекты, которым хватает и LIKE %keyword%, а есть и крупные системы, в которых такая халтура не прокатит.
Самое забавное, что делая поиск по первому варианту многие веб-студии пишут в смете «модуль поиска» и умудряются содрать с несчастного клиента за это дополнительные деньги. Порой, немалые.

И всё равно поиск на основе я.xml кажется мне одним большим костылём.
Можно привести огромный список больших и успешных интернет-проектов, которые используют для поиска по сайту G,Y и Q. Имея на то свои резоны и избавляясь от головной боли.

И тут приходит Quiz и авторитетно обвиняет их в лени и дикости.
Не очень понятно, зачем обрабатывать поисковую строку, тем более таки «ущербным регекспом», если яндекс и так все это делает.
2е непотно, зачем вырезать, что-то из xml ести можно просто не обрабатывать этот елемент в xsl.

Вобщем слабая статья и не точная статья, скорее расчитана на совсем на новичков, а не опытных(как вы сказали) программистов.
Сейчас объясню:

1. Я обработал поисковую строку регуляркой потому, что если этого не сделать, то при наличии разных спецсимволов Яндекс норовит подсунуть мне в выдаче различные другие сайты, где они все же найдены. Для себя я поставил ограничения: буквы, цифры, пробелы…

2. Я не могу не обрабатывать параметр «query» в XSL, он мне нужен, но в другом виде, нежели он приходит из XML. Эта строчка нужна больше для красоты, можно сделать и по-другому.

3. Вы, yellow_duck, видимо не внимательно ознакомились с этой статьей, ведь в ней я не упоминал словов «опытный программист», поэтому ваши обвинения безосновательны.
два года работал у меня поиск через Yandex.XML
в один момент перестал…
дампы входящего xml показали что он выдает страницы с других доменов( которые слава богу я прибивал)

суть в том что я писал как и написано в хелпе & lt ;& lt; host=& quot ;yoursite.ru& quot ; а теперь ( почему-то? ) писать << host=\«yoursite.ru\»
Для поиска на сайте я бы предпочёл гугл т.к. гугл индексирует больше страниц и быстрее. Тоесть добавляем материал на сайт, в поиске от гугл он становится доступен через сутки, в поиске от яндекс до месяца (по крайней мере на такие сроки ориентируются SEO конторы) и у яндекса, как правило меньше шансов, что страница будет проиндексирована вообще, тоесть часть контента будет недоступна для поиска.
Зачем использовать Яндекс.Xml? Яндекс.xml накладывает серьёзные ограничения на работу поиска: лимит запросов, использование стороннего сервиса… Если вы так любите Яндекс, то используйте Яндекс.Сервер!
Ну и что это такое? Парсить XML, когда наши корабли бороздят просторы вселенной? Почему не сделать апи?
Я уже давно сделал App для django, который работает с гугловым API, вот только очень жаль, что новых ключей они(гугл) уже не выдают.
Only those users with full accounts are able to leave comments. Log in, please.