2011-12-09 10 views
1

まず、私の悪い英語のために申し訳ありません。テキストのJava検索

私はこの質問のためにGoogle検索しましたが、それについての良い情報はありませんでした。

私は約300万語のテキストを所有しています。私の必要性は、このテキストの単語の検索を行うことです、私はすべての単語のリストを持って、私はこのテキストで同じを見つける必要があります、私は良いアイデアの結果をどのように行うには、意味のある時間。

ありがとうございました。

よろしくお願いいたします。

+1

単語を何回か検索する必要がありますか? – Tudor

+0

特定の単語のすべてのインスタンスを検索するか、その単語がテキストに含まれているかどうかを判断する必要がありますか? – tobier

+0

投稿のデータが少なかったのは残念ですが、入力テキスト内のすべての単語を常に検索する必要があります。私はBufferedReaderでロードされた.txt経由でこの入力テキストを読んでいます。前もって感謝します。 –

答えて

4

はLuceneのを見てください:http://lucene.apache.org/java/docs/index.html

+0

私はすでにLuceneをZend Frameworkでphpで使用しましたが、1つのテキストを1回検索するだけで、BufferedReaderをロードしたテキストの中でいくつかの検索に使用できますか?ありがとう。 –

+0

確かに可能です:考えを得るにはこの例を見てくださいhttp://javatechniques.com/blog/lucene-in-memory-text-search-example/ – David

+0

もう一度、この例を.txtでテストしますファイルを入り口に、ArrayListを一致する単語に置き換えます。 –

1

テキストファイルからテキストを毎回検索するのは非常にinneficientだろう。その後、

メモリが制約を使用して、ArrayListの中で各単語を追加し、これらのライブラリ

Collections.binarySearch() API 
+0

それは素晴らしいアイデアです。それぞれの単語をcoolectionに読み込んでバイナリで検索しますが、単語をリストの単語と一致させるためにバイナリに変換する必要がありますか?ありがとう。 –

+1

@Rodrigo Ferrari:バイナリ検索はバイナリ形式とは関係ありません。ますます小さくなるサブコレクションでコレクションと検索を分割する効率的な再帰アルゴリズムです。 O(N)の代わりにO(log(N))の要素を検索しますが、コレクションをソートする必要があります。 – Tudor

+1

@Rodrigo Ferrari。必要ありません。 Uは通常の文字列比較を使用できます。 Tudorはソートされたアイテムを検索する最も効率的な方法を言ったように。 –

1

チェックしてバイナリ検索を行うことができない場合には、http://johannburkard.de/software/stringsearch/

+0

すばらしいものは、ソフトウェア開発の際に飾られます。ありがとう! –

1

あなたは一度だけの単語を検索する必要がある場合は、テキストの線形検索だけではできないとは思えません。

複数の検索を行う必要がある場合は、テキストのインデックスを作成し、Luceneのようなものを使用する必要があります。

+0

ええ、私はテキストを何度か検索する必要があります、50,000回は300万語のテキストでの小さな検索です。ありがとう。 –