2011-12-09 38 views
1

首先,對不起我的英語不好。Java在文本中搜索變量列表

我爲這個問題搜索了一下,但沒有關於它的好消息。

我擁有一個約300萬字的文本。我的需要是在本文中搜索單詞,我有一個所有這些單詞的列表,我需要在本文中找到相同的單詞,我希望同伴的幫助以獲得一個好主意。有意義的時間。

感謝您的幫助。

最好的問候。

+1

你需要多次搜索單詞還是隻搜索一次? – Tudor

+0

您是否需要查找特定單詞的所有實例,或者只需確定該單詞是否在文本中? – tobier

+0

對不起,這篇文章中的數據越來越少,我需要在輸入文本中隨時搜索每個單詞。我正在通過BufferedReader加載的.txt來讀取這個輸入文本。提前致謝。 –

回答

4
+0

我已經在PHP中使用了Zend Framework的Lucene,但是在一個文本中進行一次搜索,是否可以使用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法拉利:二進制搜索與二進制格式無關。這是一種有效的遞歸算法,可將收集和搜索分割爲越來越小的子集合。它在O(log(N))中找到一個元素而不是O(N),但需要對集合進行排序。 – Tudor

+1

@Rodrigo法拉利。不需要。 U可以使用正常的字符串比較。正如Tudor所說,它是搜索排序項目的最有效方式。 –

1

如果你需要搜索的話只有一次,然後我認爲你不可能比僅僅對文本進行線性搜索做得更好。

如果你需要做幾次搜索,那麼你將需要索引你的文本,也許使用像Lucene的東西。

+0

是的,我需要多次搜索文本,50.000次是在300萬字文本中的小搜索。謝謝。 –