這更多的是一個架構問題,您將如何在規模上解決此問題。如何在分佈式計算機上分割非常大的單詞列表以便快速回答
假設您有一個數以百萬計的單詞列表,並且您需要搜索這些數以百萬計的單詞是否存在於數萬億字的語料庫中。
例如:
Word_List =
["This", "a", "test", "of", "two", "words","what","words"]
The_corpus =
["This", "a", "test", "of", "two", "words","what","words","blah","blah2"]
在上面的例子中,在the_corpus發現WORD_LIST所有的話,那麼我們的函數將返回true。請注意,「單詞」必須出現兩次。
我不知道我們可以通過Hadoop或Spark解決這個問題,通過在集羣上分發_corpus並編寫Mapper和Reducer來檢查這個單詞是否存在於語料庫中,但我無法弄清楚word_list是如何分佈的。我無法在主節點上保留word_list,因爲它太大。
必須以相同的順序和它們之間沒有任何其他的話嗎? – Shiping
@發貨順序並不重要。 – Watt
排序語料庫的話,跨節點分區,記得界限,搜索詞只在那裏他們可以定位節點 – AdamSkywalker