我正在做一个小项目,我需要构建一个倒排索引并基于用户查询应用相似性算法 - 基本信息检索。构建和搜索倒排索引的最佳 NoSQL 产品是什么?
谢谢,J
由于倒排索引是关于存储单词及其在文档中的位置之间的关系,我不确定这是否真的是 NoSQL 的一个很好的用例。传统的 SQL 在这里会更好地工作。例如,尝试这样的数据结构:
Documents (DocumentID primary key, DocumentText text)
Words (WordID primary key, Word text)
Instances (InstanceID primary key, WordID foreign key, DocumentID foreign key, WordIndex integer)
使用这种结构,当您将文档插入Documents
表中时,您会解析出每个单词并将其添加到Words
表中(如果它是新的),或者检索现有的(WordID
如果它已经存在),然后将关联的数据添加到Instances
表中。
如果您打算使用 NoSQL,您可以将它与 MongoDB 等工具一起使用,并将所有文档放在一个集合中,将所有单词放在另一个集合中。在每个Word
文档中,包含一个Instances
数组,该数组将是一个对象数组,其中包含ObjectID
相关文档的 和该文档中的单词索引。但是,我不确定 MongoDB 是否针对处理文档中如此大的数组进行了优化。像“a”和“the”这样的常用词最终甚至可能超过 4MB 的文档限制,具体取决于您拥有的数据量。
请参阅弹性搜索
- 分布式、可扩展和高可用
- 实时搜索和分析功能
- 复杂的 RESTful API