使用集合在 c#.NET 中动态存储和检索 3,000,000 个单词
如何在不使用 SQL 的情况下动态存储和检索超过 3,000,000 个单词。
从文档中获取一个单词,然后检查该单词是否可用。
如果有的话, 然后在相应的文档计数中增加它......
如果不可用 即,新单词然后创建一个新列,然后增加文档计数并置零 到所有其他文件。
例如..
我有 93,000 个文档,每个文档包含或多或少 5000 个单词。如果出现新单词,则添加新列。同样有 960000 个单词出现。
----------------Word1 word2 word3 word4 word5 ....---- 新单词 ... word96000
文档1< /strong> ----2 ----19 ----45 ----16 ----7 ---- ------….0 ----.. --- -..
文档2 ----4 ----6 ----3 ----56 ----3 ----...。 --------0 ----.. ----..
文档3 ----56 ----34 ----1 ----67 - ---4 ----...。 --------0 ----.. ----..
文档4 ----7 ----45 ----9 ----45 - ---6 ----...。 --------0 ----.. ----..
文档5 ----56 ----43 ----234 ----87 - ---46 ----...。 --------0 ----..
文档6 ----56 ----6 ----2 ----5 ----23 -- ——…… --------0 ----.. ----..
。 …… 。 ……
…… 。 ……
…… 。 ……
…… 。 ……
…… 。 ……
…… 。 ……
…… 。 .. ..
文档1000 ----5 ----9 ----9 ----89 ----34 ----...。 --------1 .. ..
添加的单词计数在相应文档的条目中动态更新。
How to Store and retrieve 3,000,000+ words in Dynamically without using SQL..
Get a word from a document then check whether the word is available or not.
if available,
then increment it in corresponding document count...
if not available
i.e, New word then create a new column then increment the document count and put Zero
to all other documents.
For Example..
I having 93,000 documents each contains more or less 5000 words. If new word comes then add a new column. Likewise 960000 words came.
----------------Word1 word2 word3 word4 word5 ….---- New Word … word96000
Document1 ----2 ----19 ----45 ----16 ----7 ---- ------….0 ----.. ----..
Document2 ----4 ----6 ----3 ----56 ----3 ----…. --------0 ----.. ----..
Document3 ----56 ----34 ----1 ----67 ----4 ----…. --------0 ----.. ----..
Document4 ----7 ----45 ----9 ----45 ----6 ----…. --------0 ----.. ----..
Document5 ----56 ----43 ----234 ----87 ----46 ----…. --------0 ----..
Document6 ----56 ----6 ----2 ----5 ----23 ----…. --------0 ----.. ----..
. …. . .. ..
. …. . .. ..
. …. . .. ..
. …. . .. ..
. …. . .. ..
. …. . .. ..
. …. . .. ..
Document1000 ----5 ----9 ----9 ----89 ----34 ----…. --------1 .. ..
Count of those words that are added are dynamically updated in the corresponding document's entry.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这种稀疏矩阵通常最好实现为字典的字典。
但问题缺乏太多细节,无法提供更多建议。
Such a sparse matrix is often best implemented as a dictionary of dictionaries.
But the question lacks too many details to give more advice.
为了避免浪费内存,我建议如下:
如果您有 1000 个文档,则创建
List;文档 = 新列表<文档>(1000);
现在,如果 document1 包含单词:word2、word19 和 word45,请将这些单词的索引添加到文档中
您可以修改代码以存储单词本身。
要查看单词 word2 重复了多少次,您可以扔掉整个文档列表,看看文档是否包含单词索引。
To avoid wasting memory, I would suggest the following:
If you have 1000 documents then create
List<Document> documents = new List<Document>(1000);
Now if document1 has the words: word2, word19 and word45, add the index of these words to your document
You can modify the code to store the words themselves.
To see how many times the word word2 is repeated, you can go throw the entire list of documents and see if the document contains the word index or not.
为您提供按单词和计数索引的词典列表。我确信您可以在读入每个文件时保存信息,然后构建最终列表。
或许?
Provide you with a dictionary list indexed by word and count. I'm sure you could then save the info as each file is read in and then build up your final lists.
maybe?