|
kabe さん、こん**は。Hidemi Oya です。
>ミニトマト(施設栽培),ミニトマト,なす科野菜,野菜類」と指定すると「ミニトマト(露地栽培)」は除外される動作を想定してましたが、拾ってしまいます。
これは、CsvToRegExp 関数の設計思想によるものです。作物名は合致するもののみを検索し、上位分類の非合致な限定付き作物名を除外すれば良いという方針です。
とりあえず、施設栽培のときに露地栽培だけを除外するので良いなら、
if AnsiPos('露地', s) > 0 then s := s + '|施設|水耕';
の下に
if sp and (AnsiPos('施設', s) > 0) then s := s + '|露地';
を追加すれば OK だと思います。ただ、「○○(トンネル栽培)」「○○(マルチ栽培)」といった「○○(露地栽培)」以外のパターンをどこまで網羅するかは検討する必要があるでしょうね。
個人的には、作物名選択ダイアログの分類タブでも複数選択ができるようにし、選択した作物名に完全一致するものだけが出力された方が、いらないものまで表示されなくて使いやすいと思います。
作物名選択の簡便さと、結果の精密さのトレードオフなので、どちらか一方のみを採用するとなると、かなり微妙な判断を迫られますけどね。当面、前方一致か完全一致かを選択できるようにして、ユーザが好きな方を使えるというのが良いかもしれません。
>速度面で、以前より体感的に遅いので、LIKE演算子を使った速度優先モードもあった方がいいですかね。
確実に遅いですね(^_^;)。とはいえ、環境にもよるでしょうが、「稲」で検索しても何十秒もの時間がかかるわけではありません。従来の検索方法では、どうしても本来使えない農薬まで拾ってしまうところが不満でした(REGEXP はこの解消のために実装したようなものですから)。
もし速度優先モードを付けるなら、こちらは完全一致にした方が良いと思います。
|
|