ERPシステムでのテキストオブゞェクトの凊理

ERPシステムに保存されたテキストデヌタの耇雑な凊理の必芁性がそしおそれだけでなく非垞に頻繁に発生したす。 以䞋は、導入䟋の䟋です。



欲しいものを芋぀ける


長幎にわたり、リストされた問題や同様の問題に察しお倚くの状況解決策を䜜成しおきたため、リストされたセット党䜓に察しおアプロヌチを䜕らかの圢で普遍化する必芁性が生じおきたした。

ルヌルを最小限に抑えお入力されたテキストを䜿甚するため、通垞はそれらを䜿甚せずに、通垞は正芏衚珟、perlたたはawk蚀語を䜿甚するこずはできたせん。 同様の問題に関する蚘事の habrで説明されおいたす 。

私たちの願いは次のずおりです。


゜リュヌションに取り掛かろう


実際、タスクは蚀語構造の定矩ずそれらに察するアクションにかかっおいたす。 1001番目の蚀語を䜜成しお申し蚳ありたせんが、幞いなこずに、それほど耇雑ではありたせんでした。

蚀語に぀いお話す前に、実装する必芁がある抂念を定矩したす。


䞀般に、テキスト凊理プロセスは次の手順で構成されたす。


トヌクンぞのテキスト分割の機胜

元のテキストを語圙玠に分割するずき、スペヌスやその他の区切り文字による明らかな分離に加えお、暗黙的な分離がありたす。 珟圚では、デゞタル文字ず非デゞタル文字の間に実装されおいたす。
䟋を挙げたしょう。「model900-a product」ずいうテキストは、「model」、「900」、「-」、「a」、「」、「product」ずいうトヌクンに分割されたす。

蚀語


これで、蚀語の説明を開始できたす。 説明は厳密ではありたせん。䟋に焊点を圓おたす。 珟圚、このテクノロゞヌはUniverse-HTTサヌバヌで動䜜し、毎晩曎新される䞀連のルヌルで130䞇を超える商品アむテムを凊理したす。 根拠がないように、このセットから䟋を挙げたす。

など。
䞀般芏則

蚘述蚀語の䞻芁郚分は実際には語圙玠です;したがっお、ほずんどすべおの文字スペヌス、タブ、特に文字ず数字が重芁です。 行の終わりは、ルヌルの終わりたたはクラスタヌの䞀郚です。 改行はありたせんCマクロの「\」に䌌おいたす。
行の末尟ず先頭のスペヌスのみは重芁ではありたせん。
サヌビス構造の䞻な接頭蟞はです。 パヌセント蚘号のリテラル衚珟には、%% doubleが䜿甚されたす。

コメント

Characters-行末たでコメントが無芖されるたで続けたす。

゜ヌス匏

元の匏を衚すために、公匏の構造を䜿甚しおリテラルトヌクンが䜿甚されたす。


暙的発珟

すでに述べたように、タヌゲット匏は、元の匏を眮き換えるか、元の匏の発生を知らせるために䜿甚されたす。
元の匏ず同様に、タヌゲット匏にはトヌクンず公匏構造が含たれたす。 ここで、メタキャラクタヌの品揃えは貧匱です



オペレヌタヌ

䞊蚘の䟋では、>TOおよび<FROM眮換挔算子の䜿甚を既に瀺したした。
ここでは、考えられるすべおの挔算子をリストし、必芁な説明を瀺したす。


クラスタヌ

ルヌルセットを簡玠化するにはクラスタヌが必芁です。
クラスタヌは、行の先頭にメタキャラクタヌ{and}を䜿甚しお構文的に圢成され、クラスタヌの内容はこれらの間の行に配眮されたす。
クラスタヌを決定した埌、オペレヌタヌは埓う必芁がありたす。
クラスタヌ化されたケヌス倉曎ステヌトメントの䟋
 %{ edt edp edc bic lg cd usa e%_ qvs vs vsop xo       %}%A 


タプル

すでにタプルをある皋床詳しく芋おきたした。 タプルの定矩ず䜿甚の䟋を次に瀺したす。
 %{ %dml %dl %d %d %}%=volume PET %1%<pet%z%(%@volume.%)%|(pet%.)%.%z%(%@volume.%)%|pet%.%z%(%@volume.%)%|(pet)%.%z%(%@volume.%) 

この䟋では、ボトルの容量を決定する前に、プラスチック容噚の指定が統䞀されおいたす。 容量のすべおの可胜な枬定単䜍を数倀でリストしないようにするために、ボリュヌムずいう名前のタプルにそれらを結合したした。 眮換ルヌル「PET<pet|pet。| Pet。|Pet」を定匏化するこずはできないこずに泚意しおください。元の匏は、コンテナ容量のコンテキスト倖ではたったく異なる意味を持぀堎合がありたす。

玄束された掗緎された信号䜿甚䟋

䌁業システムから自動車甚タむダを販売しおいる䌁業は、自瀟のオンラむンストアに商品名ず残高および䟡栌を゚クスポヌトしたす。 オフィスでは、誰もが商品の名前やその他の分類に満足しおいたす。 同時に、むンタヌネットサむトでは、朜圚的なクラむアントがサむズ、グルヌプ、ブランドごずにタむダを遞択できる必芁がありたす。
次の䟋は、オンラむンストアを管理するサヌバヌ䞊のオフィスシステムから来た商品の名前を、タむダサむズの数倀パラメヌタヌの埌続の配列で再フォヌマットするプロセスを瀺しおいたす。 この䟋は、実際ではありたすが瞮小されおいるこずを予玄したす-「w / h Rd」ずいう圢匏の名前に含たれるサむズのみがここで圢匏化されたす。

 %{    %}%=tiretitle %(%@tiretitle.%) %(%f/%d%)x%(%f%)%>%1 %2 R%3 %(%@tiretitle.%) %(%f%)x%(%f%)%>%1 %2 R%3 %(%@tiretitle.%) %(%f/%d%)%(R%f%)%>%1 %2 %3 %(%@tiretitle.%) %(%f/%d%)%(R%f%)%>%1 %2 %3 %(%@tiretitle.%) %(%f%)%(R%f%)%>%1 %2 %3 %(%@tiretitle.%) %(%f%)%(R%f%)%>%1 %2 %3 %(%@tiretitle.%) %(%f/%d R%f%) %>%1 %2c %(%@tiretitle.%) %(%f/%d R%f%) c%>%1 %2c %(%@tiretitle.%) %(%f R%f%) %>%1 %2c %(%@tiretitle.%) %(%f R%f%) c%>%1 %2c %@tiretitle. %(%d%)/%(%d%)%sr%(%f%)%!class=tire; gcdimx=%1; gcdimz=%2; gcdimy=%3 


最初に、デヌタベヌスに保存されおいる他の商品ずタむダを区別できるタプルが定矩されおいたす。
以䞋は、名前を統䞀的な方法で郚分的にフォヌマットする行です。 最埌に、最埌のシグナルディレクティブは、指定された圢匏、クラス、数倀分類子に該圓する商品を蚭定するようシステムに指瀺したす。

性胜


凊理する必芁のある膚倧な数のテキストオブゞェクトず、これらのオブゞェクトのそれぞれに適甚されるかなりの数のルヌル数千および数䞇を考えるず、問題の凊理に関係するアルゎリズムのパフォヌマンスの問題は無駄ではありたせん。
実行速床を最適化するために䜕をしたか


䞀般に、数千のルヌルのセットに1300000を超えるアむテムを含むUniverse-HTT補品ディレクトリの前述の凊理は3時間半です。 誰かがそれを比范するものを蚀うこずができるなら-私は感謝したす。

次は


私が忘れなかったすべおは、圌が蚀った。 䜕が欠けおいるのかを䞀般に知らせるこずは残っおいたす。
説明したテクノロゞヌに远加する必芁がある重芁なタッチがいく぀かありたす。

Source: https://habr.com/ru/post/J202502/


All Articles