#navi(雑記2009) 文字列3個(ABC)のand or検索パターン 1、A∩B∩C 2、A∩(B∩C) 3、A∩B∪C 4、A∩(B∪C) 5、A∪B∩C 6、A∪(B∩C) 7、A∪B∪C 8、A∪(B∪C) 9、(A∩B)∩C 10、(A∩B)∪C 11、(A∪B)∩C 12、(A∪B)∪C この内、1・2・9は同値、7・8・12も同値 1、A∩B∩C=A∩(B∩C)=(A∩B)∩C 3、A∩B∪C 4、A∩(B∪C) 5、A∪B∩C 6、A∪(B∩C) 7、A∪B∪C=A∪(B∪C)=(A∪B)∪C 10、(A∩B)∪C 11、(A∪B)∩C ええっと、ベン図書かなきゃ混乱するね。 3と10も同値か。5と11も同値か。 1、A∩B∩C=A∩(B∩C)=(A∩B)∩C 3、A∩B∪C=(A∩B)∪C 4、A∩(B∪C) 5、A∪B∩C=(A∪B)∩C 6、A∪(B∩C) 7、A∪B∪C=A∪(B∪C)=(A∪B)∪C 4はB∪C∩A、6はB∩C∪A、に置き換える。 1、A∩B∩C=A∩(B∩C)=(A∩B)∩C 3、A∩B∪C=(A∩B)∪C 4、B∪C∩A=A∩(B∪C) 5、A∪B∩C=(A∪B)∩C 6、B∩C∪A=A∪(B∩C) 7、A∪B∪C=A∪(B∪C)=(A∪B)∪C これで、( )無しの正順で処理できる。 3文字での入力式では、括弧使った式での入力認めた場合、 式の置き換え行った後、6種類の処理すれば良いはず。 プロセスとしては、 1.( )の有無を調べる 分岐 →2.( )が無ければ正順で処理 →3.( )があれば、パターンチェック→式の置き換え→正順処理 つうことか。面倒しいね。 ( )を認めないで、全て正順で処理すると宣言しておく方が楽だな。 非user friendly?? ところで、not検索組み込んでおかないと、全てのベン図内の領域指定パターン網羅できないよね。 例「AとBの共通部分からCを除く」 はてはて・・・・。 not検索用には半角!使うのが妥当か?? AandBnotC=A&B!C となると、パターン識別処理は更に増えるねぇ。 さし当たり文字列2個のnot検索実装する方が先か? 別に難しいことではない。ちょこちょこですぐ出来る。 必要性があるかどうか、つまり利用者がいるかどうかだけの問題。 ---- 一応在庫検索にnot検索をつけてみた。半角!でnot検索になる。 (半角--マイナス2個でも可) 「日本の歴史!岩波」で「岩波」を除いた「日本の歴史」を抽出。 ---- 書誌検索にもnot検索追加。 and検索で表示が正しく行われていなかった点を修正。 半角spaceによるand検索が効いていなかった点も修正。 結構雑なまま放置していた様だ。(~_~;) 原因は、文字化け処理unit追加した際、and検索には適応していなかった為だったように思う。 ソース見たら、かなりやっつけ仕事的で、無駄なルーチン放置している。 暫く休止していて、その間殆ど未チェック状態続いていたからだろう。 在庫検索プログラムの変更が、書誌検索に反映されていなかった部分がまだありそうだ。 そういえば去年の今頃は、新プログラム作りの途中、サーバー攻撃かなり頻繁に受けて、セキュリティ面等OS自体のverupの必要を感じ、サーバー交換し、それまであれこれやってた事を中断してしまったのであった。サーバー設定や管理方法なども全然違ったものになったので、そういうあれこれに結構手を取られてしまっていた。 サーバー環境最新に維持するのは結構面倒で、にもかかわらず同等性維持するのもなかなか手が掛かる。旧サーバーに比すと基本的能力や機能は飛躍的に向上しているのだけど、まだ充分に引き出せていると云うレベルには達していない。 最近のちょっとしたレンタルサーバーではShopping Cart機能などもおまけで付いていたりするのだけれど、ざっと見渡して5年後にそのまま使い続けていられるかというと、まず無理だし陳腐化する。つうか、古書には根本的に合わない。まあ初心者がデーターベースって何?って理解するにはお手頃と云う程度のことはいえるかも知れない。他の商材と違い、対象点数が頭抜けて多いのが古書の特性。目録点数増えれば増えるほど、その管理や処理の大変さが解ってくるわけで、そうしたときにああ云うおまけのSystemではどうにもならなくなる。 ええっと何だったか、某本市場だったか、殆ど既に死んでいる。他は言わずもがな、推して知るべし。 ところで、今回のnot検索追加は、ソース上では6行程度の追加で処理している。 文字列2個を更に増やすのは簡単なのだけれど、どういう使い勝手にするのが良いのか、今暫く考えてみてからのことにする。 上のLogicは、not加えたことで又やり直しだね。遅々として進まず。 何よりも先ず自分自身が使いやすくて楽しめるものでないとダメポ。 AandB=BandA AorB=BorA AnotB(≠BnotA) BnotA 文字列2個だと基本が4パターン。ここからやり直し。 ---- 夜更けて、外部フィルター掃除 ----