2017-05-08 89 views
-1

我能夠從mongo db集合中加載數據以激發數據框。我爲此使用了mongo spark連接器。從Dataframe中的文本列中提取單詞以創建文檔字典

我現在想要提取數據框中文本字段中的單詞,以便創建將單詞映射到文檔的單詞字典。

所以,基本上,提取的單詞應該是關鍵,值應該是文檔中的docId。

我不確定如何從數據框中的文本列中解析和提取單詞,以便我可以將它們映射到相應的文檔。

映射後,我也想減少它們,以便我將單詞作爲包含該單詞的文檔列表的鍵和值。

有些人可以幫助我使用方法/代碼從數據框中的文本列中提取單詞。

回答

0

基本上你說的是:在許多文件如何包含這個詞

這種方法

1)資料收集 2)詞集合與映射效率不高,因爲如果你有1000個文檔,總單詞可能是10,000或更多。現在下面是限制:

1)您需要有文檔映射的所有單詞的記錄,這是大量的數據 2)如果文檔被更新,您需要更新所有被刪除的單詞映射並添加映射到新添加的單詞 3)如果只有30-40個單詞被頻繁搜索,您將不必要地存儲所有單詞。

相反,保持文檔簡單。將$ text索引添加到您需要進行全文本搜索的文檔內容字段中。

如果您的應用程序專門處理文本搜索,請使用elasticsearch而不是mongodb。檢查這個我曾經寫過的回答:MongoDB: Text search (exact match) using variable

Elasticsearch建立在lucene引擎上,它對文本搜索非常有效。

+0

感謝您的回覆。我的要求是使用填充的集合爲用戶提供類似於Google Suggest的自動建議。使用MongoDB Text $ text,我無法向用戶提供單詞列表,但我可以搜索文檔中的特定文本。由於我的組織採取了一些企業決策,我們無法使用ElasticSearch,因此我們必須利用MongoDB功能來完成此要求。 – Jbaur

+0

因此,如果我輸入pley,它會建議我玩嗎?或者你也想填充有玩,玩家,玩的文件的標題?或者您還希望mongodb查看文檔的內容,而不僅僅是標題和尋找工作播放? –

+0

當用戶鍵入'A'時,從A開始的單詞將從從索引集合中提取的索引集合中獲取,該集合通過從源集合中提取單詞來填充。索引的集合將具有帶「_id」字段的文檔作爲提取的詞的值。其他字段將是具有該字段的文檔的文檔Id。這可以通過像查詢之類的正則表達式來完成。返回的單詞將被髮送給用戶。當用戶選擇一個單詞時,我們將在索引集合中查找單詞,從那裏獲取文檔位置,然後查詢源集合以獲取實際文檔。 – Jbaur