2つの文字列リストがあります。最初は名前のリスト(6MB)、2番目は文のリスト(約3百万文)です。 私は文章を通してそれぞれの名前を探したい。それには数日かかる。 私はパターンマッチングを使用しています。また、文章や名前はユーザによって生成され、不確実であるため、正規表現をチェックします。 どうすれば速くできますか?Javaでインデックスを使用して一致する文字列
-1
A
答えて
0
Google BigQueryをご覧ください。
データが読み込まれると、数分で回答が得られます。 SQLと似た構文と述語の正規表現をサポートしています。だからあなたはそれに文章を読み込み、where節にある単語で質問を出すことができます。
すべてのクラウドサービスと同じように、DB管理スキルは必要なく、保守作業も不要です。もちろん、あなたはそのすべての良さを支払う必要があります。
私はこのツールを使用して、複数のテキスト列を含む300Mレコードを正規表現で検索し、通常1分以内に答えを得ました。
重要な注意点:このデータベースはデータの更新をサポートしていません(レコードの更新も削除もありません)。これは、静的なデータ、理想的なログファイル、過去の記録などに理想的です。もう1つ重要な注意点は、データが雲の中にあり、あなたの制御下にないことです。
1
名前のリストを高速検索(ハッシュテーブル、BSTなど)を提供するデータ構造に格納します。 Javaは、それらの多くのためのライブラリを提供します。
これで、作成された名前のデータ構造内の各トークンを検索し、検索します。毎回名前のリストをたどる時間を節約します。それでも、シングルスレッドで時間を取るつもりですが、簡単に並列化することができます。
同じタスクを実行する複数のスレッドを(計算リソースごとに)作成できますが、別の場所から文章のファイルを読み始めることができます。
さらに洗練された並列化のために、メモリ内の計算を行い、タスクを任意の数のスレッドに容易に拡大するようなフレームワークを使用することをお勧めします。
関連する問題
- 1. javaの部分文字列メソッドを使用して文字を引き出して一致させる
- 2. Javaでの文字列のファジー文字列一致
- 3. JavaScript一致を使用して文字列の一部を抽出する
- 4. xml解析文字列に一致Java
- 5. R - 次のコマンドを使用して、文字列一致
- 6. 一致する文字列
- 7. 一致する文字列
- 8. 一致する文字列
- 9. 一致する文字列
- 10. 一致文字列
- 11. PowerShellでRegexを使用して部分文字列を一致させる
- 12. 文字列をインデックスとして使用する文字列変数のPHP isset()
- 13. regexprを使用して一致する文字列の複数の不一致のインデックスを取得するにはどうすればよいですか?
- 14. クエリ文字列パラメータを使用してUriTemplateの一致を明確にする
- 15. Javaの文字列で同時タグを一致させる
- 16. 文字列を確認する文字列が一致する
- 17. 配列内の一致するインデックス文字列を連結するPHP関数?
- 18. コンマで一致する文字列
- 19. Rubyで一致する文字列までの文字列を返します
- 20. regex(java 1.6)を使ってファイル名に文字列を一致させる
- 21. ブーストスピリットを使用した文字列の一致
- 22. Regexを使用して文字列の一部をJavaで置換する
- 23. perlを使用して文中で完全一致を一致
- 24. インデックス文字列でHashcodeを使用
- 25. Java文字列は、インデックス
- 26. 文字列のインデックスJavaメソッド
- 27. 文字列の配列が文字列と一致する
- 28. Pandasとapply関数を使用して文字列を一致させる
- 29. 1文字列が一致し、1文字列がLinuxで一致しないjarを見つける方法
- 30. Boost :: Xpressiveを使用して1文字に一致させる
適切なデータベースがおそらくより高速になります。 – SomeJavaGuy
私はデータベースにすべてを持っています。私はどのようにインデックスを検索し、文字列を一致させるために使用するのか分からない。読むべき情報源は私にも役立ちます。 – Raha1986
ジョブを実行するクエリを作成するより。それはJavaですべてを行うよりもずっと速くすべきです。 – SomeJavaGuy