【发布时间】:2015-10-09 21:28:48
【问题描述】:
请原谅,这将是我第一次向 SO 发帖,所以请告诉我如何改进。
我目前正在就我面临的问题寻求建议。我有一个包含十亿个唯一文本字符串的列表。这些文本字符串还有一个与之关联的标签列表,用于指示字符串的内容。
例子:
StringText: The cat ate on Sunday
AnimalCode: c001
ActionCode: a001
TimeCode: d001
在哪里
c001 = The cat
a001= ate
d001 = on Sunday
我已将所有字符串及其代码作为单个文档加载到 MongoDB 实例中
目前,我正在尝试设计一种方法,通过该方法我可以输入字符串并在数据库中搜索以返回匹配项。我的问题是搜索需要很长时间才能返回结果。
我在 StringText 字段上创建了一个索引,但我猜测它太大而无法保存在内存中。
每个字符串都有相同的被搜索概率,因此我无法可靠地预测哪些字符串具有更高的搜索概率并将它们拉到另一个集合中。
目前,我在一个具有 16GB RAM 和 4TB HDD 的盒子上运行数据库。
有人对我如何更有效地完成任务有任何建议吗? Mongo 是正确的技术,还是有其他更擅长进行这种搜索和返回的技术?
我的目标(如果愚蠢,请原谅我)是尝试在 2 秒或更短的时间内返回结果。
我对整个领域都很陌生,因此欢迎任何和所有建议。
非常感谢大家的帮助和时间。
真诚地, 辛加
【问题讨论】:
-
如果基于StringText进行搜索,那么Animal、Action和Time code的用途是什么?
-
嗨,galactocalypse...这些代码用于将该短语链接到另一个数据库中具有相似含义的其他短语。即 c001 = cat 并且还链接到“猫”等的另一个代码等。目标是将字符串映射到其编码值。
-
所有输入句子的结构都应该一样吗?
-
输入总是需要至少一个动物和一个动作。天将是可选的。因此,如果输入是“The cat ate”,结果将返回“The cat ate on Sunday”、“The cat ate on Monday”、“The cat ate on Tuesday”等(猫似乎很饿)。这回答了你的问题吗?
-
是的,确实如此。您是否考虑过预处理输入字符串以查找相关的 AnimalCode、ActionCode 和可选的 TimeCode,以使即将进行的搜索直接依赖于索引代码而不是繁琐的文本搜索?
标签: string mongodb search indexing