2017-02-15 8 views
0

私はメモリ内のいくつか(数KB、多分1メガバイト最大)大きめの文字列を持っている、彼らは以下の例のような構造化テキスト含まれています。私は、ファイルからこれらの文字列を読み、「クエリ」にする必要があります構造化テキスト内の部分文字列にすばやくアクセスできるデータ構造ですか?

Def[prop=A, ... some more kv pairs] 
    SubDef[prop=B, ... some more kv pairs] 
    SubSubDef[prop=C, ... some more kv pairs] 
    ... goes deeper ... 
Def[prop=X, ... some more kv pairs] 
    SubDef[prop=Y, ... some more kv pairs] 
    SubSubDef[prop=Z, ... some more kv pairs] 
    ... goes deeper ... 
SubDef[prop=Y, ... some more kv pairs] <- yeah, SubDef can also be on level 1 
    SubSubDef[prop=Z, ... some more kv pairs] 

をデータ用です。たとえば、クエリは次のようになります。Def[].SubDef[].prop[]これは、の中にあるすべてSubDefの中に私がすべてpropを入れることを意味します。

私の考えは、私がファイル構造を読んだとき、私は何とか構造を示すキーワードを索引付けすることができました。同様に、すべてのDef文字列の配列を保持することができます。すべてSubDefとすべてSubSubDefです。したがって、SubDefプロパティを検索する必要がある場合は、文字列全体でこれらのキーワードのオフセットにジャンプできます。

一般的なデータ構造があるのでしょうか?基本的にグラフのようなものですか? SubDefもレベル1にすることができるので、実際にはツリーではありません。

明確にするために、その文字列には多くのキーワードがありますが、私はそれらのサブセットのみを気にしています。

構造化文字列内のキーワードのオフセットを表す一般的なデータ構造はありますか?

答えて

0

実際にはツリーです。最初のレベルではツリーの子要素であるルートを持っています:def、def、subdef。

は、ツリーにあなたの構造を変換し、その後、あなたは私が問題を再訪する時間を持っていた任意のアルゴリズム(偶数のXPath)

+0

を使用することができます照会するため、はい、私は同意する、それがツリーとして、それをモデル化するために理にかなっています。さらに、リスト内のツリーレベルを追跡するので、レベルNのすべてのノードにすばやくアクセスできます。お寄せいただきありがとうございます。 – Max

関連する問題