当サイトでは個別記事表示の場合、一番下に関連記事を NP_Related にて表示していますが、これだと NP_Amazon 内のデータは検索対象外となります。
たとえば、検索語を小説の作者名などにしておいても、Np_Amazon のデータ内にしか存在していない(つまり本文中にデータがない)ため、検索対象外となって関連記事としては表示されないわけです。
といった事情を改善するため、NP_Related で NP_Amazon も対象とするように、フォーラムで教えていただいた手法で修正しました。
まず、検索語で NP_Amazon のテーブル内を検索し、ASBNコードを全て取得します(作者名が検索語の場合、複数の商品が対象となるため)。
そして、算出したASBNコード全てに対し、それぞれOR検索を行うようなWHERE条件を追加する、といった形で実現しています。
改修箇所は、NP_Related の 474行あたりになります。
case 'type3': // 2009/11/7 takehana_upd_start //$str_where .= $str_cat ."( ititle LIKE '%$qpiece%' OR ibody LIKE '%$qpiece%' OR imore LIKE '%$qpiece%' )"; //search asbn-code $result_asbn = mysql_query("SELECT asbncode FROM " . sql_table("plugin_amazon") ." WHERE title LIKE '%$qpiece%' OR author LIKE '%$qpiece%'" ); //make sql-asbn if (@mysql_num_rows($result_asbn) > 0) { $str_amazon = ''; while ($row = mysql_fetch_object($result_asbn)) { $asbn = $row->asbncode; $str_amazon .= $str_amazon . " OR ititle LIKE '%$asbn%'" ." OR ibody LIKE '%$asbn%'" ." OR imore LIKE '%$asbn%'"; } } $str_where .= $str_cat ."( ititle LIKE '%$qpiece%' OR ibody LIKE '%$qpiece%' OR imore LIKE '%$qpiece%'" . $str_amazon ." )"; // 2009/11/7 takehana_upd_end break;
動作例としては、この記事をご覧ください。関連記事のところを見ると、Np_Amazonでしか作者名を記載されていない記事が、ちゃんと関連記事として表示されているのが確認できるかと思います。
コメント