Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#26 2011-01-07 22:26:45

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: 検索機能をプラグインで拡張可能に

3.5xJPから、検索関連度対応の本家コードをマージしたので、
その影響かと思います。
逆に、これまでも本家版コアとの組み合わせでは問題が発生していたのかも。

オフライン

#27 2011-09-06 19:41:33

dan
メンバー
登録日: 2007-08-14
投稿: 74

Re: 検索機能をプラグインで拡張可能に

Nuclesu3.41を3.64にアップしたところ、「NP_ExtensibleSearch_v011」を使っているページで、
以下のエラーが出るようになりました。

mySQL error with query SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, m.mrealname as authorname, i.itime, i.imore as more, m.mnumber as authorid, m.memail as authormail, m.murl as authorurl, c.cname as category, i.icat as catid, i.iclosed as closed FROM nucleus_item as i, nucleus_member as m, nucleus_category as c WHERE i.iauthor=m.mnumber and i.icat=c.catid and i.inumber in (1,2) ORDER BY score DESC LIMIT 0,50: Unknown column 'score' in 'order clause'

検索結果のページで、何件ヒットしたかを表示させるために当プラグインを使用しており、スキンに

<%ExtensibleSearch(count)%>

と書いています。

別トピックにも挙げましたが、使用しているサーバーが、
PHP4 → PHP5
MySQL4 → MySQL5 にアップしました。
そのことに起因しているのではないかと思っています。

コードを書き換える必要があるのだと思いますが、
どなたかアドバイスを頂けないでしょうか。

どうぞ宜しくお願いします。

オフライン

#28 2011-09-12 09:24:16

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,210
ウェブサイト

Re: 検索機能をプラグインで拡張可能に

dan さんの発言:

Nuclesu3.41を3.64にアップしたところ、「NP_ExtensibleSearch_v011」を使っているページで、
以下のエラーが出るようになりました。

4つほど上のPUSHMANさんの修正を行ってもエラーが続きますでしょうか。
また、一応最新版はこの記事の一番上にある1.12かと思いますので、修正は1.12に対して行う方が間違いがないと思います。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#29 2011-09-20 15:19:41

dan
メンバー
登録日: 2007-08-14
投稿: 74

Re: 検索機能をプラグインで拡張可能に

4つほど上のPUSHMANさんの修正を行ってもエラーが続きますでしょうか。
また、一応最新版はこの記事の一番上にある1.12かと思いますので、修正は1.12に対して行う方が間違いがないと思います。

藤咲さん、ありがとうございます。
ずいぶん前にご返事いただいていたのに、見落としていました。
申し訳ありません。

まず結果ですが、コードを修正したらうまくいきました。
その経緯をご説明します。

まずはアドバイス通りに、v1.12を修正してインストールしようと思いました。
おそらくコードの81行目付近が該当する部分だろうと思いましたが、

$sqlquery .= $select ? ' ORDER BY score DESC' : ' ORDER BY i.itime DESC ';

とあり、どうも上記の修正例とコードが似ているようで異なっており、
小心者の私はひとまず触らずにおきました。

そして、とりあえずインストールしようとすると、

Nucleusのプラグインとして必要なメソッドがプラグインでサポートされていないか、プラグインファイルが見当たりません。(管理操作履歴に詳細があります。)

とエラーが出て、管理履歴を見てみると、

プラグイン「NP_ExtensibleSearch 2」を読み込めませんでした(ファイル内にプラグインクラスが存在しません)

と出ていました。

それで、v1.12を諦めて、v1.11の該当する部分を修正してから再インストールしたところ、
ちゃんとヒット数が表示されるようになりました。

本当にありがとうございました!

オフライン

#30 2016-04-01 22:16:22

nshown
メンバー
登録日: 2008-01-05
投稿: 98

Re: 検索機能をプラグインで拡張可能に

Nucleus 3.64がインストールされた下記の環境において、こちらのスレッドの情報を元にNP_ExtensibleSearch 0.12を修正し、うまく検索結果を得ることができました。
MySQL : 5.1.41
PHP : 5.3.1

ところが、Nucleus 3.71が新規インストールされた以下の環境では検索結果が全く表示されませんでした。
MySQL : 5.6.24
PHP : 5.6.8

オフライン

#31 2016-11-17 10:17:56

yama
Administrator
登録日: 2005-07-07
投稿: 1,243
ウェブサイト

Re: 検索機能をプラグインで拡張可能に

https://github.com/NucleusCMS/NP_Extens … master.zip
https://github.com/NucleusCMS/NP_Extens … its/master
開発中のv3.8devで動作しなかったため修正しました。v3.8devはすでに本家版に日本の検索ロジックが移植されているので、本家版で試しています。
http://japan.nucleuscms.org/forum/viewt … 528#p26528
上記の問題が解決されてなかったので、これも修正しました。
http://japan.nucleuscms.org/forum/viewt … 531#p26531
ここに書いてあるとおりの修正(3行追加、実質1行)で問題ないのですが、今後自分も使うかもしれないのでいろいろ整理してます。

オフライン

#32 2016-11-20 10:27:44

nshown
メンバー
登録日: 2008-01-05
投稿: 98

Re: 検索機能をプラグインで拡張可能に

yama様
ZIPファイルをダウンロードさせて頂き、インストールしてみました。
早速スキンの当該箇所を<%ExtensibleSearch%>に置き換えて、元の<%searchresults%>変数では問題なく検索結果が得られているキーワードで試してみましたが、「キーワード○○は見つかりませんでした。」となってしまいました。

使用に当たって何か他に設定する項目がございましたでしょうか?

なお。当方の環境はXampp 5.6.8 for WindowsがインストールされたWindows8.1です。
詳細なソフトのバージョンは下記の通りです。
Apache 2.4.12
PHP 5.6.8
MySQL 5.6.24
Nucleus 3.71

オフライン

#33 2017-08-31 10:40:23

nshown
メンバー
登録日: 2008-01-05
投稿: 98

Re: 検索機能をプラグインで拡張可能に

NP_ExtensibleSearch Ver.0.2を使用して検索すると、<%searchresults%>では問題なく検索結果が得られているキーワードであっても、一致するものが見つからない件ですが、
クエリを表示させてみたところ、91行目の"and 1=2"があるために検索結果が0件となるのではないかと思いますがいかがでしょうか?

$_[] = $items  ? 'and i.inumber in (' . implode(',', $items) . ')' : ' and 1=2 ';

この部分を以下のように変更して試行してみたところ、検索結果が返ってきました。

$_[] = $items  ? 'and i.inumber in (' . implode(',', $items) . ')' : ' ';

なお、このプラグインを使ってみたいと思ったそもそも動機である、NP_znItemFieldEXで拡張したテキストフィールドの検索については、残念ながらVer.0.2ではできませんでした。(NP_znItemFieldEXのバージョンは0.15)

編集者 nshown (2017-08-31 11:10:51)

オフライン

#34 2017-09-05 23:51:13

nshown
メンバー
登録日: 2008-01-05
投稿: 98

Re: 検索機能をプラグインで拡張可能に

Nucleus Ver.3.71で、NP_ExtensibleSearch Ver.0.2を用いてNP_znItemFieldEX Ver.0.15によって拡張されたフィールドを検索できなかった件ですが、なんとか解決しました。
原因はNP_znItemFieldEX.php内の_PreSearchResults関数内で生成されるSQL文のためのようです。
この関数内に記述されている$query変数をそのまま使うと、さらにその下方にある次の行で、とんでもないSQL文が作られてしまい、結果としてうまく検索されませんでした。

$searchclass   = new SEARCH($query);
$where         = $searchclass->boolean_sql_where($tgtFieldWhere);
$where         = strtr($where, array('i.zzz.'=> ''));
$sqlquery     .= ' WHERE i.idraft = 0 AND i.itime<='.mysqldate($blog->getCorrectTime()).' AND i.iblog IN ('.implode(',', $blogs).') AND ' . $where;

なのでクエリをそのまま渡すのではなく、検索キーワードをスペース区切りにして渡したらいいのではないかと考えてみました。

まず、_PreSearchResults関数内の以下の行を次のように書き換えます。
変更前

$query         = $data['query'];

変更後

$query         = $data['query'];
$pattern = "/%(.+?)%/";
preg_match_all($pattern, $query, $matches);
$arr      = array_unique($matches[1]);
$keywords = implode(" ", array_unique($arr));

次に、同じ関数内の以下の行を次のように書き換えます。
変更前

$searchclass   = new SEARCH($query);

変更後

$searchclass   = new SEARCH($keywords);

最後に、NP_ExtensibleSearch.php内の以下の行を次のように書き換えます。
変更前

$_[] = 'and '.$where;
$_[] = $items  ? 'and i.inumber in (' . implode(',', $items) . ')' : ' and 1=2 ';

変更後

$where = rtrim($where, "))");
$_[] = 'and ' . $where;
$_[] = $items  ? ') or (i.inumber in (' . implode(',', $items) . '))) ' : ')) ';

オフライン

#35 2017-11-17 11:39:34

shinshinshin
メンバー
登録日: 2008-03-23
投稿: 7

Re: 検索機能をプラグインで拡張可能に

nshown様ありがとうございます。
おかげでこちらもなとか対処できました。
このプラグインでページスイッチを出したいのですが実装されていましたかね?

オフライン

#36 2017-11-17 15:09:28

nshown
メンバー
登録日: 2008-01-05
投稿: 98

Re: 検索機能をプラグインで拡張可能に

このプラグインそのものにはページスイッチ機能はありませんので、別途NP_PageSwitch 1.2を使って実現する方法があります。

NP_PageSwitchをインストールした上で、「検索ページ」のスキンに下記のような行を記述すればよいと存じます。

<dl id="searchresults">
<%ExtensibleSearch(skin/searchlist,10)%>
</dl>
<div class="pswitch">
<%if(PageSwitch,limit,10)%>
<%PageSwitch(prev,< 前へ)%>
<%PageSwitch(index,2)%>
<%PageSwitch(next,次へ >)%>
<%endif%>
</div>

オフライン

#37 2017-11-17 17:12:30

shinshinshin
メンバー
登録日: 2008-03-23
投稿: 7

Re: 検索機能をプラグインで拡張可能に

早速のご返信ありがとうございます!
そのようにやってみているのですが表示されないのです。
とりあえず件数指定せずだらーっと表示させているのですが何とかしたいものです、、

オフライン

#38 昨日 10:38:56

nshown
メンバー
登録日: 2008-01-05
投稿: 98

Re: 検索機能をプラグインで拡張可能に

失礼しました、NP_PageSwitchはVer.1.2ではなく、こちらで入手できるVer.1.2.1でした。
ご参考までに、当方の環境は次の通りです。この環境においてはNP_PageSwitchによるページスイッチは、目論見通りの動きとなっております。
Apache 2.4.12
PHP 5.6.8
MySQL 5.6.24
Nucleus 3.71
NP_ExtensibleSearch Ver.0.2(改)
NP_PageSwitch Ver.1.2.1

オフライン

Board footer