CustomFieldsSearch とは

MT > CustomFieldsSearch
| | コメント(79) | トラックバック(1)

できること

  • カスタムフィールドの内容を対象にして検索を行うことができます。
  • また指定したフィールドのみを対象にして検索を行うことができます。
  • 部分的にAND検索やOR検索に対応しています。

できないこと

  • MT(4.2以降)が備えている記法でのAND検索やOR検索には対応していません。
  • MT(4.2以降)が備えている記法でのカテゴリーや投稿者によるフィルタリングには対応していません。

対応しているMT(フリーワードによる検索機能)

  • MTOS
  • MT4

対応しているMT(全ての機能)

  • MTOS(4.2以降)
  • MT4.2以降

インストール

  1. ダウンロードページからアーカイブをダウンロードします
  2. ダウンロードしたファイルを展開し、プラグインディレクトリに設置します
  3. 設置完了です

ライセンス

修正BSDライセンス

トラックバック(1)

このブログ記事を参照しているブログ一覧: CustomFieldsSearch とは

このブログ記事に対するトラックバックURL: http://tec.toi-planning.net/mtos/mt-tb.cgi/47

» カスタムフィールドの検索(カズーBLOG | STUDIO KAZOO | スタジオ・カズー | ホームページ制作)~のトラックバック

Movable Typeのカスタムフィールド内の値は検索の対象とならないため、T... 続きを読む

コメント(79)

i-daisuke :

はじめまして。大変すばらしいプラグインが数多くあり、とても感謝しております。
さて、CustomFieldsSearchを使用させて頂いており、以下のようなhidden要素を追加させ、カスタムフィールドを検索対象にしております。

<input type="hidden" name="CustomFieldsSearch" value="1" />
<input type="hidden" name="CustomFieldsSearchClassType" value="entry" />
<input type="hidden" name="CustomFieldsSearchField" value="cf_outline" />
<input type="hidden" name="IncludeBlogs" value="1" />

上記の記述ではカスタムフィールドが対象になっていないようです。
試しにhiddenをやめ、このブログに記載されているようにチェックボックにしましたが、ダメでした。

唯一違うところは、カスタムフィールドを各ブログで増やしたのではなく、システムメニューから全ブログ共通として追加しています。

システムメニューか追加したカスタムフィールドは対象外なのでしょうか?

Taku AMANO :

コメントありがとうございます。

CustomFieldsSearchについては、システムメニューで追加した全ブログ共通のカスタムフィールドについても、検索対象にできる仕様にです。
上で指定してもらっているオプションについては間違っていないようなので、それで検索ができていないのであれば、不具合かもしれません。


まず一つ、確認をお願いしたい点としては、「CustomFieldsSearchField」ここには「タグ名」を指定するようになっているのですが、検索対象のフィールドは、<MTcf_outline>で出力可能なフィールドでしょうか。MTの他の部分では「タグ名」でなく「ベースネーム」を指定するような仕様もありますので、念のため確認をさせていただきました。


また、お手数をですが、作成をしていただいた検索フォームから検索をした場合の、mt-search.cgi以下のクエリー部分を教えていただくことはできますでしょうか。

CustomFieldsSearch=1&CustomFieldsSearchClassType=entry&CustomFieldsSearchField=field11&IncludeBlogs=1

のような部分です。
また申し訳ないのですが、MTのバージョンについてもご連絡を頂ければありがたいです。


以上です。
よろしくお願いいたします。

i-daisuke :

ご丁寧にありがとうございます。
MTのバージョンは4.22-jaになります。

また、クリエは以下になります。

mt-search.cgi?
CustomFieldsSearch=1&CustomFieldsSearchClassType=entry&
CustomFieldsSearchField=cf_outline&
CustomFieldsSearchField=cf_newtxt&
CustomFieldsSearchField=cf_tel&CustomFieldsSearchField=cf_fax&IncludeBlogs=4&
IncludeBlogs=1&
search=検索文字&submit.x=0&submit.y=0


また、「タグ名」「ベースネーム」の件ですが、上記2つは同一の文字列にしている為、問題ないかと思います。
ちなみに、本文やタイトルは検索対象になっているようですので、検索自体は動いているようです。

もし他に必要な情報などありましたら、ご連絡くださいませ。

Taku AMANO :

ご回答頂きありがとうございます。

そしてすみません、全く最初のご指摘の通り、「システム全体で共通のフィールド」について、検索対象に含まれない状態になっておりました。
お時間を使わせてしまい申し訳ありませんでした。

「システム全体で共通のフィールド」についても検索対象になるように修正をしたものを、0.1.4として以下のURLからダウンロードできるようにいしましたので、ご確認をいただければありがたいです。
http://code.google.com/p/customfieldssearch-mtplugin/downloads/list

よろしくお願いいたします。

ご回答頂きありがとうございます。
最新版のほうで試したところ、無事検索できました!!
助かりました。本当にありがとうございました。

また何か不具合などありましたら、ご報告させて頂きますね。
ありがとうございました。

Taku AMANO :

ご確認頂きありがとうございます。

不具合の報告、ありがたいです。
今後ともよろしくお願いいたします。

mova :

初めまして、今回こちらの「CustomFieldsSearch」を利用させていただいたものです。
この大変すばらしいプラグインのおかげで作業がはかどり、大変感謝しております。


現在私はブログ記事に多数のカスタムフィールドを付与しておりますが、このプラグインのおかげでウィジットの「検索」から容易に検索する事ができる様になりました。


しかし、そこまで行くと今度は、「管理画面の検索機能で検索できないかな・・・・」と欲が出てきてしまい、未熟な分際で試行錯誤してみましたが、やはり検索を行うことができませんでした。

そこで質問なのですが、「CustomFieldsSearch」を使用して管理画面の検索機能でカスタムフィールドの値を検索することは可能なのでしょうか?

Taku AMANO :

コメントありがとうございます。
また回答が遅くなり申し訳ありません。

管理画面での検索機能は公開側の検索機能とは別の方法で実装がされているため、CustomFieldsSearch と同じように、という対応は難しい状態です。
検索機能もそうですがブログ記事の一覧画面でも、カスタムフィールドの値を利用して絞り込みができれば便利だろうな思っていますので、いつか CustomFieldsSearch とは別の形でプラグインを作れればとも考えているのですが、今は手を付けられていません。

以上のような状況です。ご了承のほど、よろしくお願いします。

mova :

ご丁寧にありがとうございます、また返信が遅れましてまことに申し訳ございません。

そうですか、やはり難しいのですね。とりあえず今の所は諦めようと思います。
自分の実力では到底解決できそうにも無いので^^;

確かにブログ記事の一覧画面で絞込みが出来ればより便利そうですね。


わざわざこのような質問にお答え頂き、ありがとうございました。

今後益々のご活躍を心よりお祈り申し上げます。
ご回答本当にありがとうございました。

z :

便利なプラグインありがとうございます。

質問があります。
CustomFieldsSearchFieldはMTCommentBodyのコメントタグも検索可能でしょうか?

Taku AMANO :

コメントありがとうございます。

CustomFieldsSearch は、コメントとして入力されたデータを対象にすることはできません。
ただ確かに、そういう検索が必要となる場面もありそうですね。
いずれ考えてみるかもしれませんが、今のところは予定はありません。

お力になれずに申し訳ありませんが、別の方法を検討ください。
よろしくお願いします。

shin :

大変便利なプラグイン、ありがとうございます。
早速使わせていただこうと思っているのですが、
フォームを生成せずに特定のキーワードの検索結果へのリンクを
直接作ることもできますでしょうか?
初歩的な質問でもうしわけありません。

Taku AMANO :

コメントありがとうございます。

はい、可能です。
「CustomFieldsSearch のデモ」にもリンクがありますが、デモほど長いものでなくても、例えば以下のような感じでリンクを設置することができます。

<a href="<mt:CGIPath /><mt:SearchScript />?CustomFieldsSearch=1&IncludeBlogs=<mt:BlogID />&limit=20&CustomFieldsSearchField=フィールドのタグ名&search=検索語">検索語</a>

いかがでしょうか。

shin :

ご回答ありがとうございます。
デモに表示されているリンクを私が読解できなかっただけですね・・・。
早速、教えていただいたとおりやってみました。
できました!!

これは、相当便利なプラグインですね!
ありがとうございます!!!

taka :

デモの方では検索結果のページに、入力した項目が受け取れているのですが、どのようにされているのでしょうか。

キーワードは<MTSearchStrings>で受け取るのは分かります。

プルダウンやチェック項目で、該当するものがある場合は

<MTSearchResults>
<mt:IfCustomFieldsSearchField tag="book_pub">
<MTSetVarBlock name="mtbook_pub2"><MTbook_pub></MTSetVarBlock>
</mt:IfCustomFieldsSearchField>
</MTSearchResults>

とリストの中で拾って、

<select name="CustomFieldsSearchFieldLike">
<option value="">指定なし</option>
<option value="book_pub:インプレスジャパン"<MTIf name="mtbook_pub2" eq="インプレスジャパン"> selected="selected"</MTIf>>インプレスジャパン</option>
<option value="book_pub:ソフトバンククリエイティブ"<MTIf name="mtbook_pub2" eq="ソフトバンククリエイティブ"> selected="selected"</MTIf>>ソフトバンククリエイティブ</option>
<option value="book_pub:オライリージャパン"<MTIf name="mtbook_pub2" eq="オライリージャパン"> selected="selected"</MTIf>>オライリージャパン</option>
</select>

判断するという方法をとれば、チェックをつけれました。

今、該当がない場合にチェックをつける方法がわかりません。

リストの中に該当記事が無い場合でも出せるようなタグ、もしくはのように、受け取った値自体を参照できるタグなどがあるのでしょうか。
もしよろしければ教えていただけないでしょうか。
よろしくお願い致します。

taka :

御社が提供されている

FillInForm-MTPlugin
http://tec.toi-planning.net/mt/fillinform/

を使ってフォーム部分を囲めば良かったんですね。
長々と書いてしまい申し訳ありませんでした。

brahman :

はじめまして。いまMT4.25のコミュニティ機能を使って、草野球チームのHPをつくっております。

カスタムフィールド検索で、例えば、

・防御率が1点台(1.00~1.99)の選手
・身長が180cm台(180.0cm~189.9cm)の選手

といった抽出をおこないたいのですが、こちらのプラグインで実現可能でしょうか?

モディファイヤで、未満・以下(lt,le,gt,ge)などが指定できると一発でできると思うのですが、実現方法に行き詰まり質問させて頂きました。

よろしくお願いいたします。

Taku AMANO :

takaさん、コメントありがとうございます。
回答が遅くなりまして申し訳ありません。

プラグインを利用して頂いてありがとうございます。
また不具合を発見されたり、使いにくいところなどがありましたら、コメントを頂ければ幸です。

今後ともよろしくお願いいたします。

Taku AMANO :

brahmanさん、コメントありがとうございます。

ご指摘の通り、未満や以下で検索したいという要望を時々頂くのですが、
CustomFieldsSearchの0.1.4ではまだ対応できていません。

CustomFieldsSearchを使って(あるいは使わないで)、
現状でそのような抽出を実現するためには、以下のような方法があるかと思います。
・「1点台(1.00~1.99)」「2点台(2.00~2.99)」のように選択式のフィールドを作り、
 そのフィールドに対してCustomFieldsSearchで検索を行う。
・「1点台(1.00~1.99)」「2点台(2.00~2.99)」のようにカテゴリーを作り、
 そのカテゴリーに対してカテゴリーアーカイブで出力するか、
 CategorySearchで検索を行う。

機能不足で申し訳ありませんが、このような方法も検討して頂けばと思います。
よろしくお願いいたします。

きよ :

brahmanさんと同じ質問をしようと思っていたのですが、回答がされていました。
The blog of H.Fujimotoさんの
http://www.h-fj.com/blog/archives/2009/02/21-145227.php
を使ってカスタムフィールドを数値型で保存しています。これが以上、未満で検索できたらMTも本当に変わりますね。six apartでもぜひ検討していただきたいですね。
それにしても本当に痒いところに手が届くプラグインをたくさんありがとうございます!

きよ :

先日からうまく、00~000というような検索が出来ないか考えていて、思いついたことがあって、こんなことは可能でしょうか?
そもそも「~を除く」の検索が出来ないと前提として無理なのですが、カスタムフィールドで例えば「10~20 20~30 30~40」で10以上を「含む」で設定して、30以下を「30~40」を「除く」で設定すると以上、以下が検索できなかと。
チェックボタンでの検索では可能なので、今はそちらを予定していますが、ドロップで以上、以下だと見栄えがいいので、考えています。

くーる :

はじめまして。今回こちらのプラグインを知り早速利用させてもらいました。このようなプラグインを探していたのでとても助かりました。
そこで質問なのですが、目的地まで歩いて何分という項目を作っているのですが、ドロップダウンで5分以内,10分以内,15分以内という項目を作り、ラジオボタンで5分以内,10分以内,15分以内と作っているのですが10分以内を選択したときに10分以内と5分以内の両方を検索結果に反映することはできるのでしょうか?(15分以内を選択したときはすべて表示になります。)よろしくお願いします。

kao :

はじめまして。素敵なプラグイン開発
ありがとうございます。
カスタムフィールドを検索対象にしたくて
こちらのプラグインを利用させて頂きました。

カスタムフィールドが複数ある場合、
それらすべてのカスタムフィールドを検索対象に
する事はできますでしょうか?

<input type="hidden" name="CustomFieldsSearch" value="1" />
<input type="hidden" name="CustomFieldsSearchClassType" value="entry" />
<input type="hidden" name="CustomFieldsSearchField" value="hoge1" />
<input type="hidden" name="CustomFieldsSearchField" value="hoge2" />
<input type="hidden" name="IncludeBlogs" value="1,2,3,4" />

のように記述して検索したところ
hoge2のカスタムフィールドに
記載した文字がヒットしませんでした。

素人質問で大変恐縮ですが、
もし差し支えないようでしたら、教えて頂ければ
幸いです。

よろしくお願いします。

Taku AMANO :

きよさん、コメントありがとうございます。

内容としては、カスタムフィールドで以上や以下の検索をしたいというところだと思うのですが、CustomFieldsSearch では今のところ対応できていません。
また、いつかは対応をしたいと考えているところでもありますが、今のところ対応される明確な予定はありません。

ご了承のほど、よろしくお願いいたします。

kao :

たく様
kaoです。
承知いたしました。
早速のコメント誠にありがとうございました!


Taku AMANO :

くーるさん、コメントありがとうございます。

今までの CustomFieldsSearch ではできなかったのですが、便利そうだということで、
0.1.6からできるようになりました。
以下のように書くことで「5分以内か10分以内」という条件で検索することができます。

-------------------------------------------------------------
<input type="radio" name="CustomFieldsSearchFieldIn" value="タグ名:5分以内">:5分以内
<input type="radio" name="CustomFieldsSearchFieldIn" value="タグ名:5分以内,10分以内">:10分以内
-------------------------------------------------------------

お試し頂ければ幸です。
よろしくお願いいたします。

Taku AMANO :

kaoさん、コメントありがとうございます。

すみません、こちらの回答が遅かったため勘違いをされているのではないかと思うのですが、
kaoさんの「hoge2が検索対象にならない」件についてはこれが回答になります。

少し間が開いたので、コメントで頂いたものをもう一度繰り替えしますが、
以下のパラメーターでhoge2のフィールドについても検索の対象となるはずです。
----------------------------------------------------------------
<input type="hidden" name="CustomFieldsSearch" value="1" />
<input type="hidden" name="CustomFieldsSearchClassType" value="entry" />
<input type="hidden" name="CustomFieldsSearchField" value="hoge1" />
<input type="hidden" name="CustomFieldsSearchField" value="hoge2" />
<input type="hidden" name="IncludeBlogs" value="1,2,3,4" />
----------------------------------------------------------------

原因としては、プラグイン側の不具合という可能性もあるのですが、
手元の環境で試した限りでは問題はないようです。

設定として問題がある可能性としては、以下のようなところでしょうか。
・何らかの手違いで、フィールドのタグが「hoge2」ではない
・何らかの理由でCustomFieldsSearchのインストールができていなくて、
 本当は「hoge1」でも検索ができていなくて、MTのデフォルトの検索機能でヒットしている

もしこの回答をご覧になりましたら、ご確認を頂ければと思います。
よろしくお願いいたします。

くーる :

回答ありがとうございました。早速バージョンアップをして試したところ出来ました!ありがとうございました。

おーたむ :

はじめまして。
便利なプラグインを作成していただきありがとうございます。
カスタムフィールドも検索対象にしたく、こちらのプラグインを利用させていただこうと思っています。

お聞きしたい点が何点かあるのですが、教えていただけないでしょうか?

1、AND検索の場合とOR検索の場合があるようですが、どのようなときにOR検索になるのでしょうか?

チェックボックスのカスタムフィールドを2つ作成していた場合
チェック1とチェック2両方にチェックをつけ登録している記事しかチェックに引っかからないのでAND検索になっているようです。

デモでは『「出版年」を指定して絞り込みを行うことができます。この部分はORで条件を指定したことになります。』とあるのですが、
同じような書き方をしているつもりなのですができません。どこに注意すればよいのか等ありますでしょうか?

2、CustomFieldsSearchFieldRangeでも同じようにOR検索になるとうれしいのですが、可能でしょうか?
試したところ、AND検索になりました。

3、CustomFieldsSearchFieldLike、CustomFieldsSearchFieldInの違いがわからないので、教えていただけないでしょうか。

4、概要、タグを検索対象にすることはできないでしょうか?

4は要望なので、可能であれば検討していただけないでしょうか?
いくつも質問して大変申し訳ないのですが、お時間のあるときに教えていただければうれしいです。

shin :

MT4.25でカスタムフィールド検索を行い、検索することができました。

検索フィールドにいくつかチェックボックスを入れてあるんですが該当するものがない時に、チェックボックスの名称のものと一致するものがみつかりませんと、メッセージを出したいのですが、現状は、一致するものがない時なにも検索結果に表示されません。

こちらのデモを見ると検索結果に該当のものがないときちんと一致するものは見つかりませんと出ています。

ちなみにフリーワードで検索した場合はきちんとメッセージが表示されます。

初心者で申し訳りませんが教えていただけないでしょうか?

Taku AMANO :

おーたむさん、コメントありがとうございます。
回答いたします。


●1について
基本的には指定した条件のAND検索になります。
ORで指定をできるのは CustomFieldsSearchFieldIn を使うときだけで、
以下のように指定した場合に 「filed_name が value_a か(OR) value_b」のもの、
が検索結果として表示されます。
----------------------------------------------------
<input name="CustomFieldsSearchFieldIn" value="filed_name:value_a" />
<input name="CustomFieldsSearchFieldIn" value="filed_name:value_b" />
----------------------------------------------------
またこれは最近のアップデートにより、以下のようにも指定できるようになっています。
----------------------------------------------------
<input name="CustomFieldsSearchFieldIn" value="filed_name:value_a,value_b" />
----------------------------------------------------
デモサイトでは前者のような指定がチェックボックスとして埋め込まれています。


●2について
CustomFieldsSearchFieldRange はご指摘の通り AND の指定となります。
また OR に対応する可能性もありますが、今のところ具体的な予定はありません。


●3について
CustomFieldsSearchFieldLike と CustomFieldsSearchFieldIn についてですが、
まず前者は、フィールドの一部に指定した条件が含まれていれば一致となります。
また後者は、フィールドが完全に指定した条件である場合にのみ一致となります。

例えばフィールドの値が「abcdefg」であったとき、
CustomFieldsSearchFieldLikeは「bcd」で一致なりますが、
CustomFieldsSearchFieldInは「bcd」では一致とならず、「abcdefg」の場合にのみ一致となります。

CustomFieldsSearchFieldLikeは「テキスト」や「テキスト(複数行)」に対して使われ、
CustomFieldsSearchFieldInは「ドロップダウンリスト」に対して使われることが想定されています。


●4について
ご指摘の通りなのですが、「概要」と「タグ」については、CustomFieldsSearchでは検索の対象なりません。
カスタムフィールドの値以外に対する検索はMTのデフォルトの検索機能に準じているので、
これに関してはちょっと対応される可能性が低いです。


以上です。
よろしくお願いいたします。

ステタロウ :

こちらのプラグインを使わせてもらっております。

検索フォームを複数のチェックボックスのみで作成しており、チェックボックスにチェックを入れても該当するものがない時は、検索結果に何も表示されません。

これを該当するものはありませんと表示したいのですが、Movabletypeの検索結果のテンプレートいじっては見たのですが解決できませんでした。


よろしければご教授いただけないでしょうか?

Taku AMANO :

shinさん、コメントありがとうございます。

MTの2.4までは、CustomFieldsSearchで該当する結果がない場合には NoSearchResults で表示ができていたのですが、2.5から NoSearchResults の仕様が変更になり、検索語の入力がない場合には表示されなくなったため、CustomFieldsSearch では意図通りに表示されないという状態になっていたようでした。

これに対応したものを先ほど 0.1.7 としてリリースしましたので、よろしければそちらを試してみてください。
よろしくお願いします。

Taku AMANO :

ステタロウさん、コメントありがとうございます。

先ほど別の方からのコメントへの返信でも触れたのですが、MT2.5以降で NoSearchResults の動作に変更があったため、CustomFieldsSearch では使いづらくなっていたようです。

先ほどこれに対応したバージョンをリリースしましたので最新版を試して頂ければ、該当する検索結果がない場合に NoSearchResults で表示をすることができるかと思います。
よろしくお願いいたします。

ステタロウ :

たく様返信ありがとうございます。

バージョン0.1.7にて解決することができました。

ありがとうございました。

さとう :

初めまして。
素晴らしいプラグインありがとうございます。
こちらのサイトに巡り合えてうれしい限りです。

デモの動きを見ていると、
ちょっとしたWebデータベース検索システムが
作れてしまいそうなのでトライしてみました。

デモのように思い通り作れたのですが、
検索結果をソートする方法を
私自身、知識が足りないため分かりませんでした。

Webで調べたのですが、
出てくるのはアーカイブやカテゴリが多く、
検索結果を並び替える情報に辿り着きませんでした。
もし、たく様のほうで何か分かるようでしたら、
ご教授いただけないでしょうか。

なかむら :

こちらのプラグインを使わさせて頂いています。
とても検索の幅が広がりました。

「CustomFieldsSearchFieldRange」タグで、いくつかご質問があります。
「MTFillInForm」を使用しています。

1、同じフォーム内で2つ以上使用すると、正常に動作しません。
----------------------------------------------
2、option value内の
「 「>」が「&gt;」
「=」は使用不可
に置き換えないと検索結果に引き継ぎができない。
----------------------------------------------
3.option valueで「1500」で検索する際、
「0~20」の検索で引っかかる。
2桁で認識されているかと思われます。
----------------------------------------------

上記のことはご対応可能でしょうか?
宜しくお願い致します。
MTのバージョン4.22-jaです。

Taku AMANO :

さとう様、コメントありがとうございます。
回答が遅くなってすみませんでした。

CustomFieldsSearch ではMTの検索機能をそのまま使っているので、
SixApartのドキュメントにある以下の方法で並べ替えを行なうことができます。
http://www.movabletype.jp/documentation/designer/customizing_search_template.html

ただ上記の方法だと「タイトル」や「作成日時」といったデフォルトの情報でしか並べ替えることはできません。
本当は、CustomFieldsSearchでカスタムフィールドの値で並べ替えることができればよいのですが、今のところそのような機能はありません。

以上です。
よろしくお願いいたします。

Taku AMANO :

なかむらさん、コメントありがとうございます。
回答が遅くなってしまいすみません。


> 1、同じフォーム内で2つ以上使用すると、正常に動作しません。
ご指摘の通りです。これはちょっと不便でした。
これを解消できる仕組みを追加した0.1.9をリリースしましたので、
よろしければ試して見て下さい。
http://code.google.com/p/customfieldssearch-mtplugin/downloads/list

以下のように「:1」「:2」を付けて複数指定することができます。
1や2の部分は重複しなければどのような値でも構いません。
----------------------------------------------------------------------------
<select name="CustomFieldsSearchFieldRange:1">
<option value="rangefield:&lt;=20">&lt;=20</option>
<option value="rangefield:&lt;=40">&lt;=40</option>
</select>

<select name="CustomFieldsSearchFieldRange:2">
<option value="rangefield2:&lt;=20">&lt;=20</option>
<option value="rangefield2:&lt;=40">&lt;=40</option>
</select>
---------------------------------------------------------------------------


> 2、option value内の
> 「<」は「&lt;」
> 「>」が「&gt;」
> 「=」は使用不可
> に置き換えないと検索結果に引き継ぎができない。
これもご指摘の通りです。ありがとうございます。

ただこちらで確認をした範囲では、置き換えを行なっても検索には影響を与えず、
特に不具合はないようでしたが、何かありましたでしょうか。

また「=」の「使用不可」の意味がちょっと分からなかったのですが、
こちらで確認をした範囲では、
「>=」や「<=」についてはFillInFormの利用については問題なく、
検索についても問題がないようでした。

また「=」のみという意味であれば、
CustomFieldsSearchFieldRangeでは利用できません。
「=」の意味で利用する場合にはCustomFieldsSearchFieldInを使ってください。


> 3.option valueで「1500」で検索する際、
> 「0~20」の検索で引っかかる。
> 2桁で認識されているかと思われます。
説明不足ですみませんでした。
CustomFieldsSearchFieldRangeで検索対象となるカスタムフィールドは、
数値型のフィールドとなっていることが期待されていました。
※数値型のフィールドについては藤本さんのこちらの記事が参考になります。数値型のカスタムフィールドを追加するプラグイン

数値型のフィールドで無い場合には、「文字」として比較されるので、
1500が0と20の間にヒットするという結果になります。


以上です。
よろしくお願いいたします。

なかむら :

たく様
ご返事ありがとうございます。

ご教授頂きました内容で修正を行いました。

> 1、同じフォーム内で2つ以上使用すると、正常に動作しません。
動作を確認致しました。

> 2、option value内の
> 「 > 「>」が「>」
> 「=」は使用不可
> に置き換えないと検索結果に引き継ぎができない。
「=」は私の記述ミスでした。
申し訳ございません。

> 3.option valueで「1500」で検索する際、
> 「0~20」の検索で引っかかる。
> 2桁で認識されているかと思われます。
説明が書いてあるのにもかかわらず、同じ説明をしてしまい、申し訳ございません。


「CustomFieldsSearchFieldRange」タグが複数使用できる様になり、
数値で桁数が多い検索も効率的に作成できるようになりました。
ありがとうございます。

また、何かありましたら宜しくお願い致します。

Taku AMANO :

なかむらさん、早速のご確認ありがとうございます。
問題については解決されたようでなによりです。

ただ一つ、これはお詫びしなければなりませんが、
CustomFieldsSearchFiledRangeの数値型の説明については今までは説明がなかったのですが、
コメントで指摘をしていただいてから追記をしました。
なかむら様のミスではありません。
ご指摘を頂き、ありがとうございました。

また何かありましたらコメント頂ければ幸です。

のっち :

こんにちは。
便利なプラグインをどうもありがとうございます。
ぜひ使用させていただきたいです。

ところで、複数のカスタムフィールドを使用する場合、条件が絞り込まれていく(AND検索)は実現できたのですが、複数の条件のうち、どれか一つの条件を満たせば検索される(OR検索)のやり方が分からないのですが、これは可能なのでしょうか?

Taku AMANO :

のっちさん、コメントありがとうございます。

CustomFieldsSearch(0.1.7)では複数のフィールドを対象として(OR検索)を行うことはできません。
対象のフィールドが1つの場合には「CustomFieldsSearchFieldIn」で(OR検索)を行うことができます。
http://tec.toi-planning.net/mt/customfieldssearch/manual/#customfieldssearchfieldin

よろしくお願いします。

のっち :

たく様
ご返答いただきありがとうございます。了解しました。
また分からない点がありましたらご教授お願いします。

ばっくん :

いつもお世話になっております。
MT5で使ってみたところ
「Can't coerce array into hash 」
といったエラーが表示されます。
カスタムフィールドの検索はMTを使う上で結構重要だと思うのですが、MT5に代わってもその辺が変わってなくショックでした。
もし解決法がありましたらご教授ください。
また、MT5ではカスタムフィールドをブログ等にも設定できるので、そういった部分から検索する方法もありましたらご教授ください。よろしくお願いします。

Taku AMANO :

ばっくんさん、コメントありがとうございます。

CustomFieldsSearchについてはMT5への対応を予定しています。ご指摘を頂いた点と、もう1つ別の対応が必要な点があるのですが、それについては修正ができる見込みです。

ただその他にもう1つ、MTとの連携で問題が発生する部分が出てきていて、その点については対応方法も含め検討中です。

いずれにしてもMT5の正式版が出るころには、CustomFieldsSearchの方も対応したものををリリースする予定です。

よろしくお願いします。

tama :

便利なプラグインをありがとうございます!
実際に使用させていただき、大変助かっています。

こちらのプラグインでは、カスタムフィールドとブログ記事タイトルや本文を検索対象とできるようになっていると思うのですが、カテゴリも検索できたらもっと嬉しく思いました。

カテゴリを合わせて検索できるようにすることはできますでしょうか。

お忙しいとこおろ恐れ入りますが、よろしくお願いいたします。

Taku AMANO :

tamaさん、コメントありがとうございます。

「カテゴリも検索」とはカテゴリーを指定して絞り込むことのできる機能だと思うのですが、CustomFieldsSearchでは今のところ、カテゴリーで絞り込む機能を付ける予定はありません。

申し訳ありませんが、他の方法を検討していただければ幸いです。
よろしくお願いします。

green2 :

こんにちは。green2という者です。
一つご相談&ご質問がありますので、
もし宜しければたくさんの見解をお聞かせ頂けたらと思います。

MultiBlogを使った上、ソースの方で<input type="hidden" name="IncludeBlogs" value="2,3,4,5" />と検索対象ブログを制限して、こちらのプラグインを使用しています。

カスタムフィールド名「CustomNo」というカスタムフィールドを設定し、会員番号みたいな半角数字を入力して記事を制作。こちらの「CustomNo」を検索させたいとしてるのですが、
検索される数字とされない数字があり頭を抱えています。

「CustomNo」を「900」と設定し、「900」で検索すると、

テンプレート「検索結果」の再構築中にエラーが発生しました: <mtVar>タグでエラーがありました: <mtSearchResults>タグでエラーがありました: <mtInclude>タグでエラーがありました: 「serch-result」というモジュールテンプレートが見つかりませんでした。

というエラーが表示されるのです。

このCustomNoを「No900」と設定して、「900」で検索すると、エラーは表示されず検索結果に表示されるようになります。
同じような現象は「100」でも起きました。

同じ番号が複数ブログに存在してるからか?とか、0の数が影響している?とか桁数の問題か?などいろいろ推測してテストしたのですが、検索可能番号(「3000」など)を複数ブログに立てても全部出てきますし、桁や0の数にも影響しないなど、推測は全て外れた状態です。

お手数ですが、何が影響しているかご意見をいただけたら幸いです。よろしくお願いします。

Taku AMANO :

green2さん、コメントありがとうございます。

エラーを拝見すると、「serch-result」というテンプレートモジュールがないというエラーに見えます。

例えばエラーになるかならないかは、ヒットする記事の作成されたブログによって決まってはいないでしょうか。ブログIDが2と3と4のブログには「search-result」があって、5にはないのに、5の「search-result」をincludeしようとしているとか。

またそうでないとすると、IncludeBlogsが条件によっては間違って指定されてしまっているということも考えられる気がします。

いかがでしょうか。

matsutsune :

こんにちは、CustomFieldsSearchとCategorySearchを併用して使う事はできませんでしょうか?

例えばA,B,C,dというカテゴリーがあり
1,2,3,4,5,6というカスタムフィールドがある場合

Aの4を検索結果として表示したいのですが、可能ですか?

Taku AMANO :

matsutsuneさん、コメントありがとうございます。

以前どこかで、CustomFieldsSearchとCategorySearchの併用はできないと回答をしたような気がしたのですが、今見てみたところどうもできるようです。

両方のプラグインをインストールしたMTで、以下のような検索ページへ進むようなフォームを用意すれば、CustomFieldsSearchとCategorySearchを併用した検索を行うことができます。
---------------------------------------------------------------------------------
mt-search.cgi?CustomFieldsSearch=1&IncludeBlogs=1&CustomFieldsSearchField=カスタムフィールドのタグ名&CategorySearch=1&CategorySearchSets=1&1=カテゴリー名&limit=10&search=検索語
---------------------------------------------------------------------------------

試してみてください。

たく様
早速のご回答ありがとうございます。
無事、併用して検索する事ができました。

同じような利用を考えていらっしゃる方の参考になるように記事にしておきました。

http://www.7dc.jp/matsutsune/2009/11/customfields.html
参考になれば幸い

Taku AMANO :

matsutsuneさん、コメントありがとうございます。

検索することができたとのことでなによりです。
今後ともよろしくお願いします。

のっち :

お世話になっております。
たびたびすいません。

フリーワード検索で、カスタムフィールドを検索対象にする場合、デモのように、チェックボックスにチェックを入れるという作業が、必ず必要となるのでしょうか?

あらかじめ、こちらで指定したいのですが、可能でしょうか?

Taku AMANO :

のっちさん、コメントありがとうございます。

フォームのinput要素はチェックボックスである必要はありません。
必ず指定させたいとのことでしたら、例えば以下のようになっているチェックボックスを、
---------------------------------------------------------------
<input id="CustomFieldsSearchField_text" type="checkbox" name="CustomFieldsSearchField" value="EntryBody"/>
---------------------------------------------------------------
このようにtype="hidden"のinput要素することができます。
---------------------------------------------------------------
<input id="CustomFieldsSearchField_text" type="hidden" name="CustomFieldsSearchField" value="EntryBody"/>
---------------------------------------------------------------

のっち :

たく様、どうもありがとうございました。早速やってみます。

こん :

はじめまして、こんにちは。
プラグインを使用させていただいているのですが、一つ質問したい点がありして、
お忙しいところ恐縮ですが、ご回答いただけると大変ありがたいです。

テキスト入力フィールドを複数作成し、
それらのフィールドの検索対象をそれぞれ個別のカスタムフィールドに指定して、
条件を全て満たす検索結果を表示したいと思っているのですが、可能でしょうか?

例えば

名前:(テキスト入力フィールド)
住所:(テキスト入力フィールド)
性別:(テキスト入力フィールド)

という入力フィールドがあったとして、
名前:山田/住所:大阪/性別:男
で検索して、全ての条件を満たす検索結果を表示する、というようなものです。

恐れいりますが、ご教授いただけると大変ありがたいです。

Taku AMANO :

こんさん、コメントありがとうございます。

コメントで頂いたような状況でも検索できるように更新したものを、CustomFieldsSearch の 0.2.2 としてリリースしました。

マニュアルはこちらになります。マニュアル

お試し頂ければ幸いです。
よろしくお願いします。

こん :

たく様

ご回答ありがとうございます!!!
お忙しいところ改良バージョンを作っていただき、非常に感謝しております!

さっそく使わせていただいたのですが、大変恐縮ですが一つ質問がありまして
検索対象をEntryTitleに指定している入力フィールドでの検索が
うまく働きませんでした。

<input type="hidden" name="CustomFieldsSearchFieldLike" value="EntryTitle" />

<input type="text" id="entryTitle" name="entryTitle" value="例)○○○" />

を記述するという、この方法であってますでしょうか?

Taku AMANO :

こんさん、コメントありがとうございます。

CustomFieldsSearchFieldLikeではブログ記事の内容は直接指定できないので、コメントのような書き方はできません。

以下のように書けば検索のテキストを「タイトル」のみを対象にするようにすることができますが、(試していませんが、)そのような方法ではどうでしょうか。
<input type="hidden" name="CustomFieldsSearchIgnore" value="EntryBody" />
<input type="hidden" name="CustomFieldsSearchIgnore" value="EntryMore" />
<input type="hidden" name="CustomFieldsSearchIgnore" value="EntryKeywords" />
<input type="text" id="entryTitle" name="search" value="例)○○○" />

こん :

たく様

ありがとうございます!おっしゃる通りのやり方でできました!
ご親切にご説明いただき、ありがとうございました!

ST :

はじめましてこんばんは。
いろいろさまよった結果こちらにたどり着き、プラグインを利用させていただいているのですが、1つ質問させてください。
ブログ記事内を検索対象とする場合、

と記述するかと思いますが、この記載しかしていないのにウェブページ内も検索対象となってしまいます。

ウェブページ内がヒットした場合は表示させる内容を、Ifを使って変更はできますが、ブログ記事とウェブページのどちらにも検索語句があった場合に表示がおかしくなり困っています。

初歩的な質問であれば申し訳ないのですが、検索対象を完全にブログ記事にのみにすることは可能なのでしょうか?
ご教授いただけましたら有難いのですが、よろしくお願いします。

jun :

はじめまして、こんばんは。
いつも拝見させていただいています。
mt-search.cgiではなく、Hyper Estraierのestseek.cgiと組み合わせて使うことはできますか?

AP :

CustomFieldsSearchを見つけ大変便利そうなので、興味を持っております。

>部分的にAND検索やOR検索に対応しています。
>MT(4.2以降)が備えている記法でのAND検索やOR検索には対応していません。
とありますが、
例えば「りんご みかん」と2キーワードで検索した場合どのような動きになるのでしょうか?
ご回答いただけますと大変ありがたいです。

rinopo :

APさんの質問に便乗なのですが、

自身のMT4.2に導入したところ、「りんご みかん」で検索すると、検索対象のフィールドに「りんご」のみがあるページ、「みかん」のみがあるページ、「りんご」「みかん」両方があるページ、いずれもヒットしません。

「りんご みかん」という空白つきの文言そのものがあるページにのみヒットします。「"りんご みかん"」で検索するのと同じような結果になります。

これが正しい動作なのでしょうか。それとも当方の設定がなにか間違ってるのでしょうか。

yoshi :

便利なプラグインありがとうございます。
1つご質問ですが、カスタムフィールドが約60個あり

 ・
 ・
 ・
(60個)
と検索したいと考えております。
実際に指定して、カスタムフィールドの検索をしてみるとページがうまく表示されない状態になってしまい困っております。
1つずつ数を減らしていき40個でエラーが起こらなくなりましたが、(検索対象に含まれていないカスタムフィールド)の項目の文言を検索するとページが表示されなくなってしまいます。
更に数を1つ減らし39個のカスタムフィールドで検索してみると、うまく表示されました。

分かりにくい説明で申し訳ございませんが、カスタムフィールド60個全部を検索対象にすることは可能でしょうか。
よろしくお願いします。

不具合(想定外?)のご報告です。

エリア:
<select name="CustomFieldsSearchFieldEquals">
<option value="EntryDataArea:Netherlands">Netherlands</option>
<option value="EntryDataArea:日本">日本</option>
<option value="EntryDataArea:Denmark">Denmark</option>
<option value="EntryDataArea:Cameroon">Cameroon</option>
</select>
カラー:
<select name="CustomFieldsSearchFieldEquals">
<option value="EntryDataColor:赤">赤</option>
<option value="EntryDataColor:青">青</option>
<option value="EntryDataColor:白">白</option>
</select>

こんな感じの検索を行った時。
片方でマルチバイトの値を選択すると、もう片方でシングルバイトの値を選択したものが無視されてしまうんですね。

例えば
エリア:Netherlands
カラー:青
とすると、エリアが反映されない……。

MTコアの方の問題なんでしょうか??

利用者 :

はじめまして
素晴らしいプラグインを使わさせて頂き感謝感謝です。

一つご質問なのですが
AのカスタムフィールドBのカスタムフィールドを
インプットテキストを一つ作ってAもしくはBにその値があれば結果を取得すると言う方法は出来ないのですか??

よろしくお願い致します。

chika :

すばらしいプラグイン誠にありがとうございます。
ショップ検索のサイトを作成中で
CustomFieldSearch を導入していますが
以下の環境にて 動作しません(検索はされますが検索結果がブログ記事全件表示となります)

を指定すると検索文字を入力しても検索結果無しとなります
環境
==================================
Movable Type バージョン 5.031 (5.03でも同様)
MySQL version 5.0.45
CustomFieldsSearch-0.2.5 (0.2.4でも同様)
==================================

カスタムフィールドはシステム全体レベルで
==================================
システムオブジェクト →ブログ
テキスト(複数行)
ベースネーム shop_address
テンプレートタグBlogDataShopAddress
==================================
のように作成

検索はwebサイトのウィジェットにて作成
GETされる検索クエリは
mt-search.cgi?CustomFieldsSearch=1&
CustomFieldsSearchClassType=entry&
CustomFieldsSearchIgnore=EntryTitle&
CustomFieldsSearchIgnore=EntryBody&
CustomFieldsSearchIgnore=EntryMore&
CustomFieldsSearchIgnore=EntryKeywords&
IncludeBlogs=1%2C4%2C6&
search=%E9%9D%92%E8%91%89&
CustomFieldsSearchField=BlogDataShopAddress&
limit=3
==================================
のようにGETされております 本来ならば
BlogDataShopAddress に入力されている文字で検索されるはずでありますが
検索結果は無しです
システム全体のカスタムフィールドには対応してないのかと思い 
Webサイトレベル ブログレベルでもカスタムフィールドを作成
検索させてみましたがやはり駄目でございました。
うっかり Mysqlバージョン4のサーバで構築してしまい、あわててMysqlバージョン5のサーバーで再構築しましたが
結果は同じです。Mysqlのクエリログも取得してみましたが・・・途方にくれております。
sqlクエリログで一つ気になるところは
SELECT field_id
FROM mt_field
WHERE (field_blog_id IN ('1','4','6','0')) AND (field_tag IN ('BlogDataShopAddress')) AND (field_obj_type = 'entry')
の返り値が空なところです。
大変恐縮ですが
アドバイスいただければ幸いです。

chika :

お世話になります。その後色々検証してまして
以下の点を発見しました
tabele mt_field 上にて
システムオブジェクト →ブログ にて作成したカスタムフィールドは
field_obj_typeカラムが"blog"に設定されます。

mt_fieldに対する sqlクエリは

SELECT field_id
FROM mt_field
WHERE (field_blog_id IN ('1','4','6','0')) AND (field_tag IN ('BlogDataShopAddress')) AND (field_obj_type = 'entry')

と発行されております。

ひょっとしますと、システムから追加したシステムオブジェクトが ブログ記事orウェブページ以外のカスタムフィールドには
対応していない?と思ってしまいました。スミマセン

chika :

連続で失礼します
再度 ブログ以下でオブジェクト:ウェブページにてカスタムフィールドを再作成

にて検索しましたが検索できず
この状態でも sqlクエリは
AND (field_obj_type = 'entry')にて流れております。
ひょっとしてモジュール内での entry と pageの判別が
うまく言ってないかと愚考しますが・・・・
いかがでしょう?

Mori :

いつも便利なプラグイン活用させていただいております。

PublishCharset Shift_JIS
をmt-config.cgiに記述してしまった場合、こちらのプラグインは機能いたしますでしょうか?

UTF-8の文字コードのMySQLにデーターを格納しているのですが、
どうしても出力をSJISにしてほしいという要望があったため、PublishCharsetでSJISに変換を行いました。

yukiwa :

教えてください。

CustomFieldsSearch-1.0.2内の「CustomFieldsSearch」をpluginsにアップロードしました。

そして検索かけると以下のエラーがでます。


Can't locate CustomFields/Field.pm in @INC (@INC contains:
/home/ドメイン/www/mtos/plugins/CustomFieldsSearch/lib
/home/ドメイン/www/mtos/plugins/MailPack/lib
/home/ドメイン/www/mtos/plugins/CKEditor/lib

...続く

最初の「/home/ドメイン/www/mtos/plugins/CustomFieldsSearch/lib」までは分かりますが、以下は別のプラグインを指しているのが、変だなと思います。
基本的な思い違いをしているのでしょうか?
済みませんが、教えてください。
よろしくお願いいたします。

kimちゃん :

こんにちは。
すばらしいプラグインをありがとうございます。

質問なのですが、MT6に対応したCustomFieldsSearchはございますでしょうか?

よろしくお願いします。

Taku AMANO :

コメントありがとうございます。

1.1.1 は対応しているので、MT6 で利用することができます。
https://code.google.com/p/customfieldssearch-mtplugin/downloads/list

kimちゃん :

いつもお世話になります。
CustomFieldsSearchで絞り込み検索を構築しているサイトを、サーバー移転させたところ、検索結果ページのURLが、ドメイン名ではなく、IPアドレスで表示されます。
これは何か設定が必要になるのでしょうか?
それとも、時間とともにドメインが表示されるようになるのでしょうか?
細かい質問で申し訳ありません。
よろしくお願いします。

Taku AMANO :

kimちゃんさん、コメントありがとうございます。

mt-config.cgi の CGIPath に IP アドレスが含まれている場合には、そのような動作になると思います。
いかがでしょうか。

kimちゃん :

こんにちは。
CustomFildsSearch、いつも利用させて頂いています。
質問があるのですが、ひとつのMT6で、ウェブサイトをウェブサイトAとBという感じで、2つ立ち上げています。
例えば、
・A、Bともに「東京、大阪、名古屋」という条件があります。
・ウェブサイトAで「東京」を選択し、検索した時にウェブサイトBの「東京」も検索結果として表示する。(逆も同じ)

といったことはできますでしょうか?
例えが下手で申し訳ありませんが、よろしくお願いします。

コメントする