3

7 GB を超える巨大なサイズのアカウントの詳細を含むテキスト ファイルがあります。各行には、単一のアカウントの詳細とその他の情報が含まれています。ここでは、最初の 3 文字を「XBB」として含むアカウントの詳細を読みたいと思います。行ごとに検索すると時間がかかるので、「XBB」を含む特定の行に直接ヒットしたい..

Java または VB 、または VB.net でそれを行う方法はありますか

4

4 に答える 4

4

行が最初の3文字でソートされている場合は、バイナリ検索を実行できます。線が固定長の場合、これは簡単です。それ以外の場合は、二分探索の各ステップで各行の先頭を検索する必要があります。

行のインデックスがわかっている場合は、直接その行にアクセスしてみてください。繰り返しますが、線が固定長の場合、これは簡単です。それ以外の場合は、まだ少し調べて検索する必要があります。

Javaでは、これに使用するツールはですRandomAccessFile。VB/VB.netについてはわかりません。

Peter Lawreyの提案に従って、ファイルを1回スキャンする場合は、各3文字のプレフィックスが始まるファイルにオフセットのインデックスを作成できます。次に、これを使用して、正しい行にすばやく到達できます。

于 2012-12-19T17:29:27.413 に答える
1

使用する言語は関係ありません。何かを見つける唯一の方法は、それを検索することです。Luceneのような検索ツールを使用して、前もって検索を行うことができます。つまり、全文検索インデックスを作成するか、現在行っているように必要なときに検索を行うことができますが、それはできません。検索部分をエスケープします。

于 2012-12-19T17:31:57.687 に答える
0

これを実行できるのは、インデックスファイルがあり、そのインデックスファイルに検索するデータの特定の列のインデックスが含まれている場合のみです。

もう1つのオプションは、ファイルをSQL Server Expressなどのデータベースにロードし、SQLクエリを実行することです。

于 2012-12-19T17:30:10.003 に答える
-1

正規表現(regex)を使用します。これらを使用すると、それらの特定の文字のみを含む式を設定できます。次に、スキャナーを使用して、その文字のシーケンスのみを検索します。

于 2012-12-19T17:29:42.467 に答える