【问题标题】:Extract words from text columns in Dataframe to create a dictionary of words to documents从 Dataframe 中的文本列中提取单词以创建单词到文档的字典
【发布时间】:2017-05-08 11:10:14
【问题描述】:

我能够从 mongo db 集合中加载数据以触发数据帧。我为此使用了 mongo spark 连接器。

我现在想提取数据框中文本字段中的单词,以创建将单词映射到文档的字典。

所以,基本上,提取的单词应该是键,值是文档中的 docId。

我不确定如何从数据框中的文本列中解析和提取单词,以便我可以将它们相应地映射到相应的文档。

映射后,我还想减少它们,以便将单词作为键,将值作为包含该单词的文档列表。

可以帮助我从数据框中的文本列中提取单词的方法/代码。

【问题讨论】:

    标签: java mongodb apache-spark


    【解决方案1】:

    基本上你说的是:

    1) 文档集合 2) Words Collection,映射有多少文档包含这个词

    这种方法效率不高,因为如果您有 1000 个文档并且总字数可能是 10,000 或更多。现在以下是限制:

    1) 您需要记录所有带有文档映射的单词,这是大量数据 2)如果一个文档被更新,你需要更新所有被移除的词映射,并为新添加的词添加映射 3) 如果只有 30-40 个词被频繁搜索,那么您没有必要存储所有词。

    相反,请保持您的文档简单。将 $text 索引添加到您需要从中进行全文搜索的文档内容字段。

    如果您的应用程序只专门处理文本搜索,请选择 elasticsearch 而不是 mongodb。检查我有时回写的这个答案:MongoDB: Text search (exact match) using variable

    Elasticsearch 建立在 lucene 引擎之上,对于文本搜索非常高效。

    【讨论】:

    • 感谢您的回复。我的要求是在用户键入时使用填充的集合向用户提供类似于 Google Suggest 的自动建议。使用 Mongo DB Text $text ,我无法向用户提供单词列表,尽管我能够在文档中搜索特定文本。由于我的组织做出了一些企业决策,我们无法使用 ElasticSearch,我们必须利用 Mongo DB 功能来完成此要求。
    • 所以如果我输入 pley,它会建议我玩吗?或者您还想填充具有播放、播放器、播放的文档的标题?或者您还希望 mongodb 查看文档的内容而不仅仅是标题并寻找工作剧本?
    • 当用户键入“A”时,将从索引集合中获取以 A 开头的单词,该索引集合是通过从源集合中提取单词来填充的。索引集合将包含带有“_id”字段的文档作为提取词的值。其他字段将是具有此字段的文档的文档 ID。这可以通过类似查询的正则表达式来完成。返回的单词将被发送给用户。当用户选择一个单词时,我们将在索引集合中查找该单词,从那里获取文档位置,然后查询源集合以获取实际文档。
    • 基本上,我们希望能够搜索文档中的任何文本类型字段,以便我们可以向用户提供相应的建议。如果可行,我们甚至可以按照您建议的方式向用户提供建议。
    • 好的,我知道了。有几件事情需要注意: 1. 你需要对最少的单词有一种保护。例如,如果我只输入 a,则可能有大量的可能性。如果您将自动建议的最小限制设置为 3,那么它会更有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    相关资源
    最近更新 更多