Yandex.XMLに基づいてサイトを検索する

何らかの理由で、ウェブマスターはサイトで通常の検索を行うのが面倒です。 これは、平均的なユーザーにとって質の高い検索が非常に便利な、頻繁にアクセスするサイトに特に当てはまります。



ほとんどの場合、彼らはGoogleの既成のソリューションを利用します。これにより、コンテキスト広告で追加のお金を稼ぐこともできます。 ただし、runetの場合は、 Yandex.XMLサービスを使用して検索を行うことをお勧めします。このような検索は、ロシア語の形態により適合しているためです。 さらに、検索を直接使用すると、コンテキストに対して最も太い入札を取得できる可能性があります。



この投稿では、このような検索を整理することはまったく難しくないことを詳細に示したいと思います。 ほんの数分でPHPの数十行が流出します。





ステップ1:YandexサービスでのIP登録



まず、 http//xml.yandex.ru/にアクセスしてIPを登録します。



画像



ステップ2:マナを読む



このサービスにはかなりわかりにくいナビゲーションがあるため、すぐに検索クエリのドキュメントへのリンクを提供します



ステップ3:PHPプログラムの作成



次に、プログラムの一部を提供します。このプログラムから、サイトに同様のモジュールを作成する方法が明らかになります。



GETまたはPOSTメソッドを使用して、検索する文字列を取得します



$q = $_GET['q'];







私はこの変数をレギュラーシーズンを通して実行しているため、あらゆる種類のいたずらメーカーは、消防士にとって恐ろしいものをそこに押し込むことを考えないでしょう。



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







Yandex XML Search Serverは、POSTメソッド(XML形式)を使用して、入力ストリームから検索クエリを受け入れます。 また、リクエストはxmlsearch.yandex.ru/xmlsearchのGETメソッドで受け入れられますが、 あまり賢くはならず、GETメソッドを使用することにしました。 $ pageは0から始まるページ番号で、yousite.ruは検索するサイトです。



$ya_query = "http://xmlsearch.yandex.ru/xmlsearch" . "/?page=" . $page . "&query=" . urlencode($q . " << host=\"yoursite.ru\"");







YashaにGETリクエストを送信します。



$xml_data = file_get_contents($ya_query);







次に、XMLファイルから検索クエリの一部を削除し(<< host =“ yoursite.ru”)、「邪魔にならない」ようにしました。



$xml_data = str_replace("& lt ;& lt ; host=& quot ;yoursite.ru& quot ;", "", $xml_data);





(スペースを削除することを忘れないでください)



これでXMLレスポンスができました。 XSLテンプレートを使用して、そこにデータを挿入します。 Yandex.xmlサービス自体にはさまざまなテンプレートがありますが、ここではテンプレートへリンクを示します。 インターネット上で「ゴミ」がたくさんあるので、私自身がインターネット上のどこかで見つけたようです。



直感的に理解していただければ幸いです。 原則として、すべてが非常に簡単です。



XSLテンプレートを読み込み、smartyが私のためにそれを行います。あなたのために、次のようになります。



$handle = fopen($filename, "r");

$xsl_data = fread($handle, filesize($filename));

fclose($handle);








さて、それだけです。PHP5のパワーを活用して、すべてをまとめるだけです。



$xh = new xsltprocessor();



$xml = new DOMDocument();

$xsl = new DOMDocument();



$xml->loadXML($xml_data);

$xsl->loadXML($xsl_data);



$xh->importStyleSheet($xsl);

$search_result = $xh->transformToXML($xml);








まあ、エンコードもutf-8に変更しました。



$search_result = iconv("windows-1251", "utf-8", $search_result);







結果を印刷します。



print $search_result;







それはすべて科学です。 実装例は私のブログで見つけることができます。 ご覧のとおり、Yandex.XMLに基づいたサイトで検索を台無しにするのはそれほど難しくありません。



私は自分自身をプログラミングの第一人者とは考えていません。詳細の一部を見落としているか、プログラマーの観点から見てあまり美しくない場所もあります。 私の欠点を教えてください、私は非常に感謝します。



トピックの詳細:



Yandex.XMLを操作するためのPHPクラス



All Articles