sakumotsu.txt の不具合

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 | 投稿日時 2013.09.16 15:23
kabe  長老   投稿数: 231
参照元の vtllk101.do が途中で切れているようです。
そのため、sakumotsu.txt の以下の部分に不具合があります。
idsakuが入っていないため、130529test版の作物タブで野菜類のジクワット・パラコート液剤が出てきません。
macs も同様のようです。

insert into id_sakumotsu values (4, '0200000042', '野菜類(レタス、キャベツ、はくさい、カリフラワー、ブロッコリー、ねぎ、だいこん、にんじん、ごぼう、たまねぎ、トマト、きゅうり、すいか、メロン、なす、ほうれんそう、ピーマン、かぼちゃ、アスパラガス、パセリ、ふき、みょうが(花穂)、みょうが(茎葉)、うど、や', 'やさいるい(れたす、きゃべつ、はくさい、かりふらわー、ぶろっこりー、ねぎ、だいこん、にんじん、ごぼう、たまねぎ、とまと、きゅうり、すいか、めろん、なす、ほうれんそう、ぴーまん、かぼちゃ、あすぱらがす、ぱせり、ふき、みょうが(かすい)、みょうが(けいよう)、うど、や');


やまのいも の や 以降が切れています。
野菜類(レタス、キャベツ、はくさい、カリフラワー、ブロッコリー、ねぎ、だいこん、にんじん、ごぼう、たまねぎ、トマト、きゅうり、すいか、メロン、なす、ほうれんそう、ピーマン、かぼちゃ、アスパラガス、パセリ、ふき、みょうが(花穂)、みょうが(茎葉)、うど、やまのいも(むかご)、しょうが、にんにく、たけのこ、いちごを除く)

投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2013.09.17 08:33
OhYeah!  管理人   投稿数: 983 オンライン
その作物名については、sakumotsu.txt の下記の部分で例外処理をしてあったんですが、作物名の全角 '()' を半角 '()' に変換し忘れてたので、機能してなかったようです。
--vtllk101.do に記載がない作物の追加 (2013.06.04)
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.09.19 08:20
kabe  長老   投稿数: 231
ありがとうございます。
直りました。
投票数:1 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.09.19 08:50
OhYeah!  管理人   投稿数: 983 オンライン
--vtllk101.do に記載がない作物の追加 (2013.06.04)
この例外処理は、適用に新しい作物名が追加されても、vtllk101.do にすぐに反映されないために、暫定措置として実行しています。
が、今回のケースだとシステム上の問題か何かで 256 文字を超える作物名が途中で切れてしまっているだけで、作物名や ID は vtllk101.do に存在します。暫定措置と言うより、恒久的例外処理になります。ということで、vtllk101.do の ID を活かす例外処理に変更しました。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013.09.19 09:03 | 最終変更
kabe  長老   投稿数: 231
ACFinder の作物選択ダイアログのツリー表示で
樹木類→せんりょう の下に「つげ」が表示されてしまっています。
本来は多分、樹木類の下に表示されなければならないのだと思いますが、ACFinder の階層チェックが甘く、表示ミスしています。

famic の分類で「つげ」の階層が 4 になっていて、最後の栽培条件付き作物名のコード 01 が割り振られています。
階層3で最後のコード 00 の「つげ」がないので、ACFinderでは直前のせんりょうの下に表示してしまっています。
3階層目の作物名部分のコードが「せんりょう」と「つげ」では異なるのですが、そこをチェックしていませんでした。

famic の検索システムも、作物名選択の分類表示では、せんりょうの下に「つげ」が表示されてます。
投票数:1 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2013.09.19 11:46 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
たしかに、「せんりょう」の作物 ID は「0500004900」、「つげ」は「0500005001」なので、「つげ」が「せんりょう」の下位に栽培条件付き作物名として表示されるのはおかしいですね。FAMIC の ID と階層レベルの付け間違いでしょうね。そういや、以前きのこ類でも似たような現象があったような…。

とりあえず FAMIC に報告しておいて、vtllk101.do が修正されるまでは、ACFinder 側をいじるより、sakumotsu.txt を作成する段階で LEVEL=3, ID=0500005000 に修正するのが良さそうです。他にもあればまとめて修正したいと思いますので、御連絡ください。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.09.19 12:02
OhYeah!  管理人   投稿数: 983 オンライン
くん蒸剤の「葉たばこ」が「米」の下に入っているのもおかしいですね。これは、「葉たばこ」の ID と LEVEL を修正するのがいいのか、葉たばこの上位に「たばこ」の ID と LEVEL を追加するのがいいのか…。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013.09.19 15:06 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
select * from sakumotsu where idsaku in (select min(idsaku) from sakumotsu group by substr(idsaku, 1, 8)) and substr(idsaku, 9, 2) != '00'; 
SQL タブで上記を実行すると、条件付き作物名のみ存在して、その上位の作物名が存在しない作物が8種類あることが分かります。このうち、「つげ」(ACFinder での上位「せんりょう」)と「しいのき(枯損木)」(ACFinder での上位「さんごじゅ」)は分類学上目から違うので明らかな間違いですが、他のケースは微妙なものが多いですね。

たとえば、ID=04000001?? の「花き」関係は、「花き類・観葉植物」の条件付き作物名であってもおかしくないし、「花き類」という小分類の下の条件付き作物名であっても良さそうです。
9ID=1010005?? の「穀類・豆類」関係も、今のまま「米」の下にあってもおかしくないし、「穀類」という小分類または作物名を上位に追加しても良さそうです。
前にも書いた ID=9101000601 の「葉たばこ」については、「米」の下に入ってしまうのはおかしいですが、くん蒸剤なので目くじらをたてるほどでもないかなあ…。
ID=9102* の展着剤関係、ID=9103* の一般畑作物関係は、このまま行くしかないでしょう。

ということで、「つげ」「しいのき(枯損木)」「葉たばこ」の3件を例外処理するってことでいいでしょうか?
投票数:0 平均点:0.00

なし Re: 「つげ」の階層

msg# 1.2.1.2.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.09.19 22:24
OhYeah!  管理人   投稿数: 983 オンライン
sakumotsu.txt に下記のような例外処理を追加しました。「つげ」と「葉たばこ」は level を 3 に変更するとともに、idsaku の下2桁を '00' にします。「しいのき(枯損木)」については、直上に「しいのき」を挿入します。

--上位階層作物名が存在しない条件付き作物名の例外処理 (2013.09.19)
insert or ignore into id_sakumotsu values (3, '0500004400', 'しいのき', 'しいのき');
update or ignore id_sakumotsu set level = 3, idsaku = '0500005000' where idsaku = '0500005001';
update or ignore id_sakumotsu set level = 3, idsaku = '9101000600' where idsaku = '9101000601';
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.09.21 20:27
kabe  長老   投稿数: 231
ありがとうございます。
ツリー表示が、直りました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013.10.17 06:43
kabe  長老   投稿数: 231
作物タブ修正中バージョンでせり科葉菜類が検索できません。

選択作物名で完全一致検索して、idSaku を取得しているため sakumotsu テーブルに存在しても、m_sakumotsu に存在しないため
検索できません。

m_sakumotsu に
0299110002 せり科葉菜類(コリアンダー(葉)、セルリー、パセリ、みつば、せりを除く)
0299110003 せり科葉菜類(みつば、パセリ、セルリーを除く)
0299110004 せり科葉菜類(みつば、コリアンダー(葉)、セルリーを除く)
などの()付きの作物名はありますが、
()が付かない「せり科葉菜類」がないためと思われます。

m_tekiyo に存在しないため m_sakumotsu作成時になくなってしまうようです。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2013.10.17 14:50 | 最終変更
OhYeah!  管理人   投稿数: 983 オンライン
引用:選択作物名で完全一致検索して、idSaku を取得しているため sakumotsu テーブルに存在しても、m_sakumotsu に存在しないため
検索できません。
idSaku は、m_sakumotsu ではなく、sakumotsu テーブルから取得する必要があります。

select if(level<4, substr(idSaku, 1,8), idSaku) as idSaku from sakumotsu where sakumotsu = 'せり科葉菜類'
この例では、level = 4 の時のみ 10 桁、0~3 は先頭8桁を取得しています。あとは、これで取得した ID を現行検索ルーチンに渡せば OK です。
DROP TABLE IF EXISTS ttTekiyoSaku;
CREATE TEMP TABLE ttTekiyoSaku AS SELECT * FROM tekiyo WHERE idSaku IN (SELECT idSaku FROM m_sakumotsu WHERE idSaku REGEXP '^(02991100)');
SELECT * FROM tvTsushoTekiyoSaku;


ちなみに、SELECT 文でテーブルを作成する場合、BEGIN/COMMIT は無くても時間は変わらないはずです。
あと、この方法の場合、現行検索ルーチンの「(○○を除く)」を削除する部分も不要ではないかと…。同じレベルの複数作物を選択した場合は、別途処理が必要になりますが、現行方式で意図通りに処理されます?
正規表現については、8桁でも 10 桁でも先頭一致の '^' を付けておいて良いと思います。ACFinder の中で、余計な処理をしなくてすみますし。
投票数:0 平均点:0.00

なし Re: せり科葉菜類

msg# 1.4.1.1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.10.17 21:54
kabe  長老   投稿数: 231
引用:idSaku は、m_sakumotsu ではなく、sakumotsu テーブルから取得する必要があります。了解です。検索可能となりました。
投票数:0 平均点:0.00

なし Re: せり科葉菜類

msg# 1.4.1.2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013.10.18 10:43
OhYeah!  管理人   投稿数: 983 オンライン
引用:あと、この方法の場合、現行検索ルーチンの「(○○を除く)」を削除する部分も不要ではないかと…。同じレベルの複数作物を選択した場合は、別途処理が必要になりますが、現行方式で意図通りに処理されます?すみません。同レベル複数作物選択時だけでなく、上位分類一括検索も含めて「(○○)を除く」の削除は必要で、現行処理で意図通りに処理できそうですね。
投票数:0 平均点:0.00

  条件検索へ