• 締切済み

サイト内検索のプログラムについて

サイトにアップした数千のページを検索するため「Googleサイト内検索(カスタム検索)」を設置したのですが、トップページしかヒットしないので、検索して javaを設置したのですが、全く機能しません。 下記のプログラムの何処を直すと、機能するでしょうか? また、この他にどのような方法があるでしょうか? <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script>  //URLのパラメーターを取得 let v = new URLSearchParams(window.location.search);  //URLのパラメーターのうち検索されたキーワードを取得 v = v.get('search-key');  //検索したい全てのURLを配列に格納 const urlLists = [ "/data/xml/", "/site-speed/asynchronous/", "/site-speed/for_while/", "/site-speed/async-2/"]; $.each(urlLists, function(i){ $.ajax({ url : urlLists[i], dataType : 'html', success : function(data){     //上記のURLからキーワードを探す if( $(data).find("#article").text().indexOf(v) !== -1){       //あれば、ページを表示する $('<li><a href="' + urlLists[i] + '">' +$(data).find("h1").text() + '</a></li>').appendTo('ul'); } }, error: function(data){ console.log("error") } }); }); </script>

  • zekusu
  • お礼率64% (122/190)

みんなの回答

  • 4017B
  • ベストアンサー率73% (1304/1775)
回答No.2

質問者と全く同じ状況に陥っている人の記事がありましたので、何かの参考にしてみてください。 - Google検索でトップページしか表示されない https://harutomo-ryu.com/archives/2012-04-18/221037.html とりあえず「TOPページ」が検索結果に出るという事から、google検索エンジンは正常に機能しており最低限のインデックス処理は実行されていると推測されます。この様な場合の不具合は通常、ツール使用者側の設置時の設定値が適切ではなかったか、或いは使用者側のwebサーバの外部からのアクセス権限が適切に設定されていない等の状況が考えられます。 質問者がwebサイト構築等に利用しているwebサーバの大本の設定で、外部からのアクセスやクローリングを最上位ディレクトリまでしか許可してない場合、google検索の結果が「TOPページしか表示されない」となります。いわゆる "直リンク禁止" というヤツです。 P.S. サイトマップは完全に適切に最適化された記述式でなければ逆効果になる場合が多いので、特に小規模な個人運営のwebサイト等ではむしろ設置させない方が良いと思います。

zekusu
質問者

お礼

ありがとう御座います。おそらく直リンクなので、ダメだと思います。3000以上あるので、ただ全てアップロードしただけの状態です。そのため検索で閲覧できるようにしようと思っていました。

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

求めている回答ではないかもしれませんが、Googleのサイト内検索は、もしかするとサイトマップをGoogleに提供しないとダメなのかもしれません。 サイトマップを作成するツールもありますので、使ってみてはどうでしょうか。 Sitemap Creatorで検索してみてください。 ただ、無料のとかはページ数が限定されていることもあるので気を付けてください。

関連するQ&A

  • 1つのファイル上で複数のjavascriptを作動

    ボタンを押したり、キーを入力すると別ファイルを呼び出すjavascriptがあります。 今回、同じページに同スクリプトを2つ設置しました。 ********************************************* 【Script1】 キーを入力すると./find.phpを呼び出す ********************************************* <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <script type='text/javascript'> $(document).ready(function(){ $("#search_results").slideUp(); $("#search_button").click(function(e){ e.preventDefault(); ajax_search(); }); $("#search_term").keyup(function(e){ e.preventDefault(); ajax_search(); }); }); function ajax_search(){ $("#search_results").show(); var search_val=$("#search_term").val(); $.post("./find.php", {search_term : search_val}, function(data){ if (data.length>0){ $("#search_results").html(data); } }) } </script> ************************************************* Script 1 を呼び出すキー入力画面 ************************************************* <form id="searchform" method="post"> <input type="text" name="search_term" id="search_term"/> <input type="submit" value="全表示" id="search_button" /> </form> ********************************************* 【Script 2】 キーを入力すると./find_op.phpを呼び出す ********************************************* <script type='text/javascript'> $(document).ready(function(){ $("#search_results_op").slideUp(); $("#search_button_op").click(function(e){ e.preventDefault(); ajax_search(); }); $("#search_term_op").keyup(function(e){ e.preventDefault(); ajax_search(); }); }); function ajax_search(){ $("#search_results_op").show(); var search_val=$("#search_term_op").val(); $.post("./find_op.php", {search_term : search_val}, function(data2){ if (data2.length>0){ $("#search_results_op").html(data2); } }) } </script> ************************************************* Script 2 を呼び出すキー入力画面 ************************************************* <form id="searchform_op" method="post"> <input type="text" name="search_term_op" id="search_term_op" /> <input type="submit" value="全表示" id="search_button_op" /> </form> ********************************************* 問題点 「Script 1 を呼び出すキー入力画面」上で文字を入力したりボタンを押したりすると、なぜかScript2が稼働してしまいます。 1つのページの中で、「Script 1」「Script2」がそれぞれ別々に稼働するためにはどこを変更すればよいでしょうか?

  • JQueryで、liタグの背景に色を付けたい。

    JQueryで、各liタグに背景色を付けたいのですが、 上手くいきません。多分clickあたりで間違ってると思うのですが・・・。 そもそも、clickの後ろには、functionを書けばいいのか?(以下ソースと同じ) それとも$だけなのか、概念がはっきり分かってません。 書き方等の解説をしてくれているページはないでしょうか・・・。 いろいろ調べてみたのですが、こうかけば動く。見たいな事しか書いてなくて 基本があやふやになっております。 ご教授お願いします。 ====以下ソース==== <html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8"> <title>jQueryテスト</title> <script type="text/javascript" src="../jquery-1.7.1.min.js"></script> <script type="text/javascript"> $(function(){ $("input:button").click(function('#list'){ .find('li.high').css('backgroundColor', 'red').end() .find('li.middle').css('backgroundColor', 'green').end() .find('li.low').css('backgroundColor', 'blue'); }); }); </script> </head> <body> <ul id="list"> <li class="high">a</li> <li class="middle">b</li> <li class="low">c</li> </ul> <form> <input type="button" value="背景変更"> </form> </body> </html>

  • jQueryのblockUIをformのボタンから呼ぶ際に、うまくいか

    jQueryのblockUIをformのボタンから呼ぶ際に、うまくいかない。 blockUIを以下のように呼んでいます。 <script type="text/javascript" src="jquery/plugin/jquery.blockUI.js"></script> <script type="text/javascript"> // unblock when ajax activity stops $(document).ajaxStop($.unblockUI); $(document).ready(function() { $('#run').click(function() { $.blockUI({ message: '<h1>お待ちください...</h1>' }); $.ajax({ url: 'xxxx', cache: false }); }); }); </script> その上で、 <input id="run" type="submit" value="お待ちください" /> というボタンを単独でつけて押すと、「お待ちください」と表示するところまで 確認できています。 最終的に実現したいことは、formのsubmitボタンを押すことにより、 パラメータを渡した上で、cgiプログラムを実行することです。 <form action="cgi-bin/search.cgi" method="post"> この中に選択条件(パラメーター) <input id="run" type="submit" value="検索開始"> </form> 現在、blockUIを使わずに、submitボタン押すと、検索CGIが適切に 動くことは確認できています。 そこで、 form action=にどのように書けばパラメーターを持ったまま、BlockUIを呼べるのか。 $.ajax({ url: 'xxxx', cache: false }); の url部分にどのように記述すると cgiを呼べるのか。(cgi-bin/search.cgi)では動きませんでした。 そのあたりをご教授お願いいたします。 blockUIの解説ページでは、CGIの実行や別ページへの遷移のサンプルがなく 困っております。 宜しくお願いします。

    • ベストアンサー
    • AJAX
  • スクレイピングした内容をvalue値に入れたい

    下記のようなページがあります。 ++++++++++++++++++++++++++++++++++++++++++ 【http://hoge.ne.jp/index.html】 <html> <table border="1"> <tbody> <tr> <td class="class3">東京</td> </tr> </tbody> </table> </html> ++++++++++++++++++++++++++++++++++++++++++ 【出来たこと】 上記の東京という文字を抜き出すスクレイピングページを作りました。 ****************************************** 【http://hogehoge.com/index.html】 <html> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script type="text/javascript" src="./js/jquery.xdomainajax.js"></script> <script> url = 'http://hoge.ne.jp/index.html'; $.get(url, function(data){ var content4 = $(data.responseText).find('.class3').text(); $("#text4").text(content4); }); </script> <div id="text4"></div> </html> 結果 → 東京 ************************************** 【出来なかったこと】 これを、<input type="text" name="tx" value="東京"> のような形でフォーム内に取り入れることを考えています。 しかしながら、下記のようにうまくいきません。 ●●だめ その1●● <html> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script type="text/javascript" src="./js/jquery.xdomainajax.js"></script> <script> url = 'http://hoge.ne.jp/index.html'; $.get(url, function(data){ var content4 = $(data.responseText).find('.class3').text(); $("#text4").text(content4); }); </script> <input type="text" name="tx" value="<div id='text4'></div>"> </html> 結果 → 表示されず ●●だめ その2●● <html> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script type="text/javascript" src="./js/jquery.xdomainajax.js"></script> <script> url = 'http://hoge.ne.jp/index.html'; $.get(url, function(data){ var content4 = $(data.responseText).find('.class3').text(); $("#text4").text(content4); }); var tx4 = content4; document.write("<input type='text' name='tx' value='" + tx4 + "' />"); </script> </html> 結果 → 表示されず 【お願いしたいこと】 <input type="text" name="tx" value="東京">の形で表示させる方法についてアドバイスいただきたくお願いいたします。

  • 検索サイト作成について

    今、Ajaxを用いてカスタム検索サイトを作成しています。内容は、検索したいキーワードをテキストボックスに入力し、その結果をタブの中で表示させるようにしています。しかし、何度してみても結果を表示させることができません。どうしたら、結果表示させることができるでしょうか?よろしくお願いします。下がソースです。 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "​http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">​ <html xmlns="​http://www.w3.org/1999/xhtml"​ xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <title>Search Site</title> <link rel="stylesheet" type="text/css" href="_css/import.css" media="all" /> <script type="text/javascript" charset="utf-8" src="_js/jquery-1.3.2.min.js"></script> <script type="text/javascript" charset="utf-8" src="_js/jquery-ui-1.7.2.custom.min.js"></script> <script type="text/javascript" charset="utf-8" src="_js/jquery_ui_tab.js"></script> </head> <body> <div id="header"> <!-- #header --></div> <div id="container"> <div id="read"> <br> </div> <ul> <li><a href="#about" title="about">about</a></li> <li><a href="_ajax/google.html" title="google">google</a></li> <li><a href="_ajax/yahoo.html" title="yahoo">yahoo</a></li> <li><a href="_ajax/goo.html" title="goo">goo</a></li> </ul> <div id="about"> </div> <!-- #container --></div> <div id="footer"> <!-- #footer --></div> </body> </html>

  • radio選択をクッキーに保存させる方法について

    こんにちは。 PHPでメタサーチを作っています。 複数の検索サイト(Yahoo!、Google等)から選択し、 検索窓に入力した値を検索サイトに送り、 iframe内に表示するようにしました。 さらに、サイトに再訪問時に、 ラジオボタンのの選択を前回と同様にしたいと思っています。 しかし、ラジオボタンのcookie保存・読み込みがうまくいきません。 PHP、JavaScript、jQueryと、様々な方法を試してみたのですが、 うまくいかず、よくわからなくなってきました。 値の取得方法に問題があるのでしょうか? ご教示お願い致します。 ※現在、jQuery使用でプログラムを組もうとしていますが、 PHPで可能であれば、その方法でもかまいません。 search4.php <?php $keyword=$_GET["keyword"]; $keyword4url=urlencode($keyword); ?> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src="jquery-1.6.4.js"></script> <script type="text/javascript" src="jquery.cookie.js"></script> <script type="text/javascript"> function P1(w1){parent.frame1.location.href=w1} //チェック状態保存 function saveChk(){ for(var i=1;i<3;i++){ if($("#chk_"+i).attr("checked")){ $.cookie('chk_'+i,'1'); } else{ $.cookie('chk_'+i,null); } } } //チェック状態読み込み function initChk(){ for(var i=1;i<3;i++){ if($.cookie('chk_'+i)){ $("#chk_"+i).attr("checked",true); } } } //ページ表示時 $(function($){ initChk(); }); </script> </head> <body> <center> <form action="search4.php" method="get"> キーワード:<input type="text" name="keyword" size="20" value="<?php echo $keyword;?>" onfocus="this.select()"> を <input id="chk_1" type="radio" name="RB1" onClick="P1('http://search.yahoo.co.jp/search?p=<?php echo $keyword4url; ?>');saveChk();" checked>Yahoo! <input id="chk_2" type="radio" name="RB1" onClick="P1('http://www.google.co.jp/#q=<?php echo $keyword4url; ?>');saveChk();">Google で <input type="submit" value="検索する" onclick="saveChk();"> </form> <br> <iframe src="http://search.yahoo.co.jp/search?p=<?php echo $keyword4url; ?>" name="frame1" frameborder="1" scrolling="auto" width="977" height="600"> </iframe> </center> </body> </html>

  • jQueryで作ったドロワーメニューに画像が被る

    トップページにjQueryを使ってドロワーメニューとカルーセルとアコーディオンメニューを作成しました。 それぞれは作動するのですが、ドロワーを一番上に表示させたいのにカルーセルとアコーディオンメニューが上に被ってしまいます。 jQueryは初心者です。よろしくお願いします。 【html】 <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.3.min.js"><\/script>')</script> <script src="js/slick.min.js"></script> </head> <body> <div id="wrapper"> <header id="header"> <div class="navDrawrBtn"><span></span></div> <nav class="navDrawr" role="tablist"> <ul> <li> <a>A</a> <ul class="sub" role="tabpanel"> <li><a>a</a></li> <li><a>b</a></li> <li><a>c</a></li> </ul> </li> <li> <a>B</a> <ul class="sub" role="tabpanel"> <li><a>a</a></li> <li><a>b</a></li> <li><a>c</a></li> </ul> </li> </ul> </nav></header> <div class="contents"> <section class="carousel"> <div class="gimmicCarousel"> <ul class="slider"> <li><a href="#"><img src="images/carousel_1.jpg"></a></li> <li><a href="#"><img src="images/carousel_2.jpg"></a></li> <li><a href="#"><img src="images/carousel_3.jpg"></a></li> </ul></div></section> <div class="accordion"> <ul> <li> <a class="toggle">C</a> <ul> <li><a href="#">ca</a></li> <li><a href="#">cb</a></li> <li><a href="#">cc</a></li> </ul> </li> <li> <a class="toggle">D</a> <ul> <li><a href="#">da</a></li> <li><a href="#">db</a></li> <li><a href="#">dc</a></li> </ul> </li> <script>// ACCORDION $(function() { function accordion() { $(this).toggleClass("active").next().slideToggle(300); } $(".accordion .toggle").click(accordion); });</script> <script src="js/script.js"></script> </body> </html> 【jcript.js】 $(function () { var $nav = $('.navDrawr'); var $navBtn = $('.navDrawrBtn'); var $speed = 300; var $navW = 270; //サブメニューを非表示に $nav.find('.sub').hide(); //hover時の挙動 $nav.find('li').hover(function(){ // PC表示時(ハンバーガーボタン非表示時)のみにプルダウンを限定 if ($('.navDrawrBtn span').css('display') !== 'block'){ //li要素にhoverした時に.subがあれば実行する if( $(this).find('.sub').length && !$nav.hasClass('open') ){ $(this).find('.sub').slideDown(); } }jj },function(){ // PC表示時(ハンバーガーボタン非表示時)のみにプルダウンを限定 if ($('.navDrawrBtn span').css('display') !== 'block'){ if(!$nav.hasClass('open')) { $(this).find('.sub').stop(true).slideUp(); } } }); //ドロワーに関連した記述(PCでもドロワーが動作するようにtouchend→clickに変更) $('body').on('click','.navDrawrBtn span',function(){ drawerFunc(); }); $('body').on('click','.overlay',function(){ drawerFunc(); }); function drawerFunc(){ if( $('body').hasClass('menuOpen') ){ $('body').removeClass('menuOpen'); $nav.animate({right:-1*$navW},$speed,'swing'); $('.overlay').fadeOut($speed); }else{ $('body').addClass('menuOpen'); if(!$('.overlay').length){ $('#wrapper').prepend('<div class="overlay"></div>'); } $nav.animate({right:0},$speed,'swing'); $('.overlay').fadeIn($speed); } } }); //カルーセルの設定 $(function () { $('.gimmicCarousel .slider').slick({ accessibility: true, dots: true, autoplay: true, autoplaySpeed:3000, infinite: true, speed: 500, slidesToShow: 3, slidesToScroll: 1, responsive: [ { breakpoint: 768, settings: { slidesToShow: 2, slidesToScroll: 1, } }, { breakpoint: 480, settings: { slidesToShow: 1, slidesToScroll: 1, } } ] }); });

  • jQueryでHTML表示の部分

    jQueryで表示されるデータをHTMLで表示するのですが、 色々いじっていたのですが、表示されなかったり<li>タグだけしかひょうじされなかったりして、 いまいちわからなくて、質問を致しました。 -現在の表示------------ <li>No:1 Title:タイトル</li> ----------------------- <li>タグの中にclassを追加したいのですが、 どうすれば、<li>タグにclassが追加されるのでしょうか。 ----------------------------------- <li class="test">No:1 Title:タイトル</li> ----------------------------------- こんな感じに表示させたいのです。 大変申し訳ございませんが、よろしくお願い致します。 <script type="text/javascript"> jQuery(function(){ $.getJSON("./json_sql.php",function(data){ $('p','#demo').remove(); $('#demo').append('<ul/>'); $.each(data,function(i,items){ $("<li/>",{ text:'No:'+items.no+' Title:'+items.title }).appendTo('ul','#demo'); }); }); }); </script> <div id="demo"> <h4>リスト</h4> </div>

  • Ajaxを使った検索サイト作成

    今、Ajaxを用いてカスタム検索サイトを作成しています。内容は、検索したいキーワードをテキストボックスに入力し、その結果をタブの中で表示させるようにしています。しかし、何度してみても結果を表示させることができません。どうしたら、結果表示させることができるでしょうか?よろしくお願いします。下がソースです。 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <title>Search Site</title> <link rel="stylesheet" type="text/css" href="_css/import.css" media="all" /> <script type="text/javascript" charset="utf-8" src="_js/jquery-1.3.2.min.js"></script> <script type="text/javascript" charset="utf-8" src="_js/jquery-ui-1.7.2.custom.min.js"></script> <script type="text/javascript" charset="utf-8" src="_js/jquery_ui_tab.js"></script> </head> <body> <div id="header"> <!-- #header --></div> <div id="container"> <div id="read"> <br> </div> <ul> <li><a href="#about" title="about">about</a></li> <li><a href="_ajax/google.html" title="google">google</a></li> <li><a href="_ajax/yahoo.html" title="yahoo">yahoo</a></li> <li><a href="_ajax/goo.html" title="goo">goo</a></li> </ul> <div id="about"> </div> <!-- #container --></div> <div id="footer"> <!-- #footer --></div> </body> </html>

    • ベストアンサー
    • AJAX
  • 初心者jQueryでサイト内検索

    初心者ですが、よろしくおねがいします。 jQueryでオンラインでGoogle Searchを利用したコードは見かけたのですが、オフラインでサイト内検索をする方法を教えてください。 因みに、以下がそうですが、Google Searchに何か入れ替えれば、できそうですが。

専門家に質問してみよう