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

研究会

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

〔449〕ACFinder 060817test版 kabe (06/08/17 13:12)
〔451〕Re:ACFinder 060817test版 Hidemi Oya (06/08/17 17:31)
〔452〕Re:ACFinder 060817test版 kabe (06/08/17 23:48)
〔453〕'c' オプションが誤動作の元 Hidemi Oya (06/08/18 0:39)
〔456〕Re:'c' オプションが誤動作の元 kabe (06/08/18 2:00)
〔457〕Re:'c' オプションが誤動作の元 Hidemi Oya (06/08/18 12:54)

〔449〕ACFinder 060817test版
 kabe WEB  (06/08/17 13:12)

引用なし
   kabe です。

060817テストバージョンです。
http://acfinder.kabe.info/

Hidemi Oya さんより match regexp 演算子に対応したクラスを作成していただきました。
SQL文で Like演算子の代わりに macth や regexp(正規表現) が使えます。
詳しい使い方は Hidemi Oya さんより解説お願いします。

macth演算子の方は、うまく動いているようですが、regexp の方が正しく動作しているかどうか不明です。
私は正規表現自体がよくわからないので動作確認お願いします。

病害虫タブの病害虫名と、薬剤タブの薬剤候補検索に match 演算子を使うように修正しています。

〔451〕Re:ACFinder 060817test版
 Hidemi Oya WEB  (06/08/17 17:31)

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

>SQL文で Like演算子の代わりに macth や regexp(正規表現) が使えます。
>詳しい使い方は Hidemi Oya さんより解説お願いします。
 っていうことなので、ACFinder サイトの拡張 SQL のページに入れておきました。

>病害虫タブの病害虫名と、薬剤タブの薬剤候補検索に match 演算子を使うように修正しています。
 薬剤候補検索ですが、現在の
meisho MATCH '%pattern%' OR shurui MATCH '%pattern%'
だと、1レコードあたり文字列正規化4回(フィールドデータとパターンデータの両方を正規化しますから)とパターンマッチング2回の実行になります。ACFinder サイトの SQL の小技に書いた
meisho||shurui MATCH '%pattern%'
なら文字列正規化2回、パターンマッチング1回の実行ですむので、こちらの方が高速に検索できる可能性があります(|| 演算子の実行速度が MATCH 演算子の実行速度より速ければですけど)。
 ま、LIKE と MATCH すら体感差はないので、後者にしてもほとんど効果はないでしょうけどね(^_^;)。

〔452〕Re:ACFinder 060817test版
 kabe WEB  (06/08/17 23:48)

引用なし
   kabe です。

regexp の方がどうも正しく動作していないようです。
単純な作物名そのものの指定でも、例えば"トマト"、"メロン"はダメです。
"きゅうり"、"すいか"はOKです。

〔453〕'c' オプションが誤動作の元
 Hidemi Oya WEB  (06/08/18 0:39)

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

 私も意図通りに動作しないことを確認して、調査していたところです。原因は、'c' オプションですね。SQLite でフィールド名やエリアスに日本語が使えないのと根っこは同じで、UTF-8 といえども、大文字/小文字変換が入ると文字化けを起こすようです。
 で、大文字/小文字同一視を TPerlRegEx の preCaseLess オプションに任せず、match と同様に一端 SJIS に戻して LCMapString で小文字->大文字変換するように修正したら大丈夫でした。

〔456〕Re:'c' オプションが誤動作の元
 kabe WEB  (06/08/18 2:00)

引用なし
   >Hidemi Oyaさん

kabe です。

>SQLite でフィールド名やエリアスに日本語が使えないのと根っこは同じで、UTF-8 といえども、大文字/小文字変換が入ると文字化けを起こすようです。
やはり、文字化けでしたか。
早速、修正いただきありがとうございます。

match と regexp 演算子が使えるのは、SQLiteを利用するデスクトップアプリケーションではもしかしたら、日本初(世界初?)かもしれませんね。
(そんなソフトがあるかどうか知りませんが)
SQLiteSpyでも 3.3.6ベースなので、まだ match は演算子としては使えないようです。regexpも、全角、半角、ひらがな、カタカナの区別なしはできないので、ACFinderの機能は強力です。

いやいや、それにしてもHidemi Oyaさんのおかげで私の当初の想定以上にものすごく高機能なソフトになってきました。
最近PCが不調なのでソースだけは無くさないようにしないと・・・・

〔457〕Re:'c' オプションが誤動作の元
 Hidemi Oya WEB  (06/08/18 12:54)

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

>やはり、文字化けでしたか。
>早速、修正いただきありがとうございます。
 とりあえずの修正でしたが、ACFinder では関係ないものの \s, \w 等の小文字系メタキャラクタが使えないのはちょっと失敗でした(^_^;)。[^\S], [^\W] で代用する手はありますが、それなら \S, \W 等の大文字系メタキャラクタを使えなくして、[\^s], [^\w] で代用した方が分かりやすいですね。
 'w' オプションがらみの制約を自動的に回避する仕組みも実装しておかないと使いにくいので、次のバージョンで併せて修正します。

>match と regexp 演算子が使えるのは、SQLiteを利用するデスクトップアプリケーションではもしかしたら、日本初(世界初?)かもしれませんね。
 match は 8/12 に仕組みが作られたばかりですし、処理内容はユーザに委ねられているので、おそらく Perl/PHP/Ruby 等のライブラリもまだ対応してないと思います。ウェブアプリを含めても世界初かも?

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