サポート » その他 » 検索結果の表示を速く行う方法について

  • 解決済 hanayoc

    (@hanayoc)


    いつもお世話になります。
    現在語彙集の作成で、検索表示の速い方法を選びたいのですが、コードに詳しくないため質問させて頂きます。

    子テーマに作成したSearch.phpの中で下記のようにカテゴリーを指定した場合、実際に指定したカテゴリー(1)内の記事のみを検索するのでしょうか?
    それとも指定したカテゴリー以外の投稿(WordPress内全ての投稿)を一旦検索した結果、結果だけは指定したカテゴリーのみを表示するのでしょうか?

    <?php query_posts($query_string . '&cat=1'); ?>

    また、サブディレクトリにインストールした語彙集専用の新しいサイトXXX.com/terms/内の記事内を、メインサイトxxx.comのSearchform.phpで下記のように記述し検索させた場合、サブディレクトリとはいえ外部Wordpressの投稿を検索させるので、上記の同一Wordpress内で検索するよりも速度的に遅くなるのでしょうか?
    (関係あるかわかりませんが、サブディレクトリもメインサイトと同じデータベースを利用しています)

    <form method="get" class="searchform" action="http://www.xxx.com/terms/" >

    どなたか詳しい方がいらっしゃいましたら、アドバイスをお願い致します。
    どうぞよろしくお願い致します。

    • このトピックは hanayocが1 週、 5 日前に変更しました。
    • このトピックは hanayocが1 週、 5 日前に変更しました。
15件の返信を表示中 - 1 - 15件目 (全15件中)
  • CG

    (@du-bist-der-lenz)

    体感からはデータベースとの連絡に影響されるところが大きいのではないですか

    こんにちは

    まず、どの程度の記事数なのか分かりませんが、数百記事程度ではWordPressのテンプレートタグの範囲で何をやっても速度はほとんど変わらないと思います。

    以下はその前提でお読みください。

    子テーマに作成したSearch.phpの中で下記のようにカテゴリーを指定した場合、実際に指定したカテゴリー(1)内の記事のみを検索するのでしょうか?
    それとも指定したカテゴリー以外の投稿(WordPress内全ての投稿)を一旦検索した結果、結果だけは指定したカテゴリーのみを表示するのでしょうか?

    検索と取得に分けて考える必要があります。
    「実際に指定したカテゴリー(1)内の記事のみを検索するのでしょうか」というご質問に対しては、「どのような条件を指定した場合にも、検索する対象は全ての記事」となります。
    全ての記事の中から指定した条件のものを探し、画面に返すという動作です。

    「一旦検索した結果」という文言の意図が、「全部取ってくる」という意味で書かれているのであれば、そういう動作ではありません。

    データベースの構造やデータ量、検索条件かにもよりますが、一般的に取得対象のデータが少ない方が高速な傾向がありますので、カテゴリなどの条件を追加して試すことは無駄ではないかもしれません。

    の同一Wordpress内で検索するよりも速度的に遅くなるのでしょうか?

    変わりません。

    余談ですが、現在は query_posts は非推奨になっており、 get_posts の利用が推奨されています。

    モデレーター Okamoto Hidetaka

    (@hideokamoto)

    サイト内検索を高速化する方法としては、他には外部のサービスを使うという手もあります。

    https://www.elasticpress.io/
    https://www.algolia.com/

    CG様、
    なるほどそういう面も関係するのですね。
    いつも迅速なアドバイスありがとうございます!

    Munyagu様、

    前者に関しては、検索は全記事を対象とし、カテゴリを指定することでそのカテゴリのものだけを取得して画面に表示するということ、取得するカテゴリを絞ると検索速度も幾分速くなる、また後者に関しては外部サイトでも変わりないということ、よく理解できました。
    丁寧でかつ分かりやすいアドバイスをありがとうございます!

    メインサイトの検索対象から外したい通常の記事数は現在数百程度で(今後増えても500記事程度)、一方、検索させたい記事は、語彙集専用で、タイトルに語彙の名前、Contentsに20文字程度の語彙の定義を5000語(5000記事)くらい作成の予定です。
    対象外となるメインサイトの通常の記事数が500記事程度で文字数もマウスで5スクロール程度なので、おっしゃる通り、前者の方法がさほど遅くならないのであれば、どちらの方法でもそう変わらないということでしょうか?

    最初は、メインサイトのほうがCSSを常に読み込んでしまうTablePressや統計情報などの重いプラグインが入っており、また、素人の知識でテーマをカスタマイズしたため記述が汚くページの表示が遅いので(メインサイトにおく検索用の固定ページそのものは、Search.phpからHeaderとサイドバーとフッターを読み込ませるだけなので軽いほうですが)、いっそシンプルなサブディレクトリのサイトを作成し、語彙集のための記事専用サイトにしてしまったほうが良いかと思っていました。

    ですが、検索で別サイトに飛ばすと、メインサイトへの誘導や、メインサイトの記事一覧等を表示するのに一苦労しそうなので、上記の条件でどちらもさほど変わらないのであれば、メインサイトのカテゴリで行きたいと思っています。

    二度手間で申し訳ありませんが、再度アドバイス頂けると幸いです。

    • この返信は1 週、 5 日前に  hanayoc さんが編集しました。

    Okamoto様、

    そういう外部サービスもあるんですね。知りませんでした。
    有料のようなので今は手が出ないですが、PVが増えて需要が出たら考慮したいと思います。
    有益な情報ありがとうございました!

    CG

    (@du-bist-der-lenz)

    古書店サイトのネットワーク検索で行ったように、サイトトップを検索主体に特化させる。
    マルチサイトを活用する。その場合でも、データベースは同一なので、応答が迅速かどうか関わってくるでしょう。現状でも、データベースを軽量化すれば幾分改善すると思いますよ。

    除外する対象が1割ではほとんど変わらないでしょう。

    5000記事を検索するとなると、運用に耐えるかどうかはテストしてみないと何とも言えませんね・・・
    それだけの記事数になると、サーバーのパフォーマンスにも左右されてきそうです。

    一旦構築してみて、運用に耐えなければOkamotoさんが提示されたサービスなども検討されてはどうでしょうか。
    とりあえずはパフォーマンスのいいサーバー上に構築したいですね。

    CG様、

    なるほど。。サブディレクトリにしてもメインサイトのデータ量にも当然左右される、ということですね!
    まだ100記事くらいしかないので安いレンタルサーバーなんです。
    そこから問題になりそうですね。
    再度アドバイスありがとうございました。

    • この返信は1 週、 5 日前に  hanayoc さんが編集しました。

    Munyagu様、

    除外する対象が1割ではほとんど変わらないでしょう。

    やはりそんな感じなんですね。ありがとうございます。

    記事数は5000記事(5000語)と多いですが、一記事あたりの記事内容がわずか20文字程度で、対象外にする500記事の1記事中の文字数に比較するとわずか20分の1程度なので、通常の記事にしてみても250記事くらいかなと思ったのですが、もしかすると総文字数ではなく、投稿記事の件数にも影響するということでしょうか。。(汗)
    その点は全く考えていませんでした。
    仰る通り、まずは構築してみて語彙数を1000語ずつほど増やしてみて、サーバーそのものを検討しないといけなそうですね。。涙

    Okamotoさんから頂いたリンクの1つに$30ほどのプランもあったので、将来検討したいと思います。

    再度アドバイスを頂きありがとうございます!

    Munyasu様、

    get_postsの情報もありがとうございます!
    実はここに投稿する前に、 query_postsのコードの意味を調べれば自分でもわかるかと思って調べてたまたま非推奨とあったのを読んだばかりでした。
    リンク頂いたget_postsのほうのページを勉強して書き換えるようにしてみます!

    もちろん、文字数が少ないほうが速いは速いですが、パフォーマンスに与える影響は件数のほうが絶大です。

    Munyagu様、

    返信ありがとうございます。
    そうなんですね。。
    費用もかかりそうでちょっと難しいようですが、とりあえずは語彙数を4000くらいに落とし、外国語とカタカナの両表記での語彙登録をやめて英字のみにすることで半数の2000記事にし、サブディレクトリで試してみたいと思います。

    これまで安易に全く文字数のみで考えていたので、前もって知ることができ助かりました!
    アドバイスありがとうございました。

    まだ別に5000件だと遅いと決まったわけでもありませんので、データを登録しながら様子を見られてはと思います。

    こちらは解決済みにするともう質問できないものと思っていました。

    実はcssやjsを読み込むので却下していたCM tooltipというプラグインが、語彙登録が通常の投稿ではない感じだったのを思い出し、もしかして重くならないのかもと思い、今日プラグインのフォーラムで質問をしたのですが、ただのcustom post typeだったようで、5000語はかなりパワフルなサーバーが必要と言われてしまいました。涙

    もう他に方法はないようなので、仰る通りこのままテストしてみようと思います。
    ありがとうございました!

    • この返信は1 週、 4 日前に  hanayoc さんが編集しました。
15件の返信を表示中 - 1 - 15件目 (全15件中)
  • このトピックに返信するにはログインが必要です。