Laboratory of Mobile Agricultural Chemicals Searcher
携帯農薬検索実験室

研究会

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
84 / 114 ツリー <前へ | 次へ>

〔44〕自動かな漢字/別名変換、屋号抜き農薬名分類に関する動作確認のお願い Hidemi Oya (05/10/18 22:07)

〔207〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/04 20:14)
〔211〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/06/04 23:33)
〔220〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/06 0:12)
〔222〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/06/06 0:40)
〔224〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/06 21:56)

〔207〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/04 20:14)

引用なし
   >Hidemi Oyaさん

>>セルの商品名はオプションで選べる方がいいのでしょうか。
> 上記のように農薬名と適用の列を分けるよりは、こちらの方が使いやすそうですね。
> ただ、剤型も含めて農薬を指定するのは面倒なので、リストには剤型をしてなくても [#203] のような結果が得られるというのが、使用する立場としては一番楽かなあ…。

 私のDBのテーブルは、登録適用部?.xlsのシート3と全く同じ構成になっています。
 そこで、

my $sqldata=qq(select meishou,shiyoukaisuu,jiki from tekiyoubu where meishou like "%$meishou%" and sakumotsumei like "$sakumotsu");

 で「%農薬の名称%」「作物名」のリストによるダブルのループでsqlを生成しデータベースを検索しています。得られた「農薬の名称」「本剤の使用回数」「使用時期」を.でつなぎ合わせ、屋号を切り捨てて、sort+uniqでセルの内容を作り出しています。

 oyaさんの希望を叶えるには、事前に商標・商品名テーブルを用意するか、データベースに一回当たらないと難しいと思います。ただ、いまでもダブルループで負荷を掛けていて、5×6件くらいのリストでレスポンスに数秒程度かかっています。これ以上データベースに負荷を掛けるべきか、事前処理で要素を整理するかは議論する必要があると思います。


> ところで、この表の行は、クエリで一気に出力レコードとして作ってるんでしょうか? それとも HTML テーブルにする際に、クエリの結果を変換してるんでしょうか? もし前者なら、ACFinder でも同様のことが可能になるので、ぜひどのようなクエリを使っているのかをお教えください。

 種明かしは上記のとおりです。表の行はforeachループが作り出しています。クエリはセルの内容しか作りません。

>> 農薬名リストの入手先を変えればいいだけですけれど、それはUIも含めて大きな変更になりそうですね。いまのものとは別のプロジェクトにして進化させる方が良いかもしれません。
> 暇がある時で結構なので、ぜひご検討をお願いします。

 分かりました。メインのプロジェクトが落ち着いたら考えてみます。

>> ちなみに私のねらいとする農薬検索プロジェクトはこちらです。
> なるほど、<a href="http://riss.narc.affrc.go.jp/nouyaku.htm">農薬ナビ</a>のような使い方ですね。成分ごとの総使用回数に配慮した防除パターンを作成する場合や、特別栽培のチェックの際などには便利そうです。

 農薬ナビの成果はよく把握していませんが、技術資料作成支援に近いかもしれません。私の組織では、農薬名の記載されたあらゆる資料の作成について農薬検査所データベースによる複数回チェックが義務づけられています。防除暦などのチェックは膨大な作業が必要になっていました。そこで、省力的なチェック用の紙データを作るのが目的でした。

 このシステムを使って、起案者が正確なバックデータを付けて回覧するようになれば、二次チェック者は出典の日付が正しいかどうかだけに注意すればデータベースを確認しなくてもチェックを進めることが出来ます。内容も必要事項だけに絞り込まれているのでチェックが容易です。作業能率は10倍以上改善できると期待しています。

 成分回数チェックはエコ農産物の申請書類用に付けたおまけです。データベースらしくて面白いかなと思ってつくりました。(*^_^*)

〔211〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/06/04 23:33)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

>my $sqldata=qq(select meishou,shiyoukaisuu,jiki from tekiyoubu where meishou like "%$meishou%" and sakumotsumei like "$sakumotsu");
 これが何でダブルのループなんだろうと思ったんですが、perl 側で農薬名と作物名のリストからそれぞれひとつずつ取り出して、その回数分 SELECT を繰り返しているってことなんですね。MySQL では正規表現が使えるので、下記のようなクエリにすれば、ループ無しで検索できます。で、農薬名を第1キー、作物名を第2キーにした2次元ハッシュに回数と時期を連結した値を保存していけば、あとで簡単に表の形で取り出せます。さらに、農薬名をハッシュキーにする際に、tm.pm を使って屋号を削除すれば、ハッシュ保存の段階で屋号抜き通称名でグルーピングでき、ハッシュデータサイズも削減できます。
 なお、MySQL で大きなデータでは試したことがありませんが、小さなデータでは正規表現によるオーバーヘッドは感じませんでした。

$re_sakumotsu = join('|', split(/[ \,]| |、|,/, $in_sakumotsu));
$re_meishou = join('|', split(/[ \,]| |、|,/, $in_meishou));
// ユーザが正規表現でリストを渡すようにした方が使い勝手が良いかな
$sqldata = "select meishou, shiyoukaisuu, jiki from teiyoubu where meishou regexp '$re_meishou' and sakumotsumei regexp '^($re_sakumotsu)$'";

> oyaさんの希望を叶えるには、事前に商標・商品名テーブルを用意するか、データベースに一回当たらないと難しいと思います。
 もちろん、屋号抜き通称名にまとめられている方がベターなのは言うまでもないですが、屋号付き農薬名ごとに異なる行になっていれば、Excel で削除するのは簡単なので、検索システム側であえて屋号を外した状態になってなくても OK です。
 ただ、上の方法なら屋号抜き通称名ごとのグルーピングもデータベースを使用することなく可能だと思います。

 ついでに、この方法でいくなら、農薬指定がない場合は、
$sqldata = "select meishou, shiyoukaisuu, jiki from teiyoubu where sakumotsumei regexp '^($re_sakumotsu)$'";
で検索するようにするだけで、リストにあげた作物に登録がある全農薬の表も作れます(用途を検索条件にして農薬数を制限しないと実用上は厳しいでしょうけど)。[#203] で書いた機能とはちょっと違いますが、こちらでも十分です。
 ってことで、メインのプロジェクトが落ち着いたら、こちらの手法もご検討ください。

>私の組織では、農薬名の記載されたあらゆる資料の作成について農薬検査所データベースによる複数回チェックが義務づけられています。
 うちもそうです。ってか、防除基準の誤記載等が問題になってから、多分いずこも同じ状況なんでしょうね。

>内容も必要事項だけに絞り込まれているのでチェックが容易です。作業能率は10倍以上改善できると期待しています。
 農薬検査所の検索結果はいらないモノも全て出てきますからねえ…。JPP-NET は検索条件に合致する適用のみが表示されますが、この目的には農薬ごとに検索する必要があるので、s_kobayashi さんのシステムが一番便利ですね。

〔220〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/06 0:12)

引用なし
   >Hidemi Oyaさん

正規表現はsql99なのかもしれませんけれど、私の教科書「PerlDBI」には書いていませんので対応できていません。

というか、||の列挙なら正規表現でなくても、in (要素の列挙)で拾えるような気がします。

また試してみます。

〔222〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/06/06 0:40)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

>というか、||の列挙なら正規表現でなくても、in (要素の列挙)で拾えるような気がします。
 IN って、ワイルドカード使えましたっけ?

 kabe さんのおかげで、[#218] のように主クエリだけの SQL 一発で検索可能な方法が判明しました。

〔224〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/06 21:56)

引用なし
   >Hidemi Oyaさん

> IN って、ワイルドカード使えましたっけ?

 何か勘違いしてました。(T.T) 流してやってください。

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
84 / 114 ツリー <前へ | 次へ>
ページ:  ┃  記事番号:   
(SS)C-BOARD vv3.8 is Free.