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

研究会

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

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

〔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)

〔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.