大表中的NoSQL关键字搜索
我很好奇 NoSQL 解决方案如何支持分布在多个服务器的非常非常大的表中的关键字搜索?
我所说的关键字搜索是指像 Google 那样的数据库,拥有大量文档,并且能够非常快速地回答诸如查找“纽约的酒店”之类的问题。
我在 NoMysql 解决方案中看到支持 OR 操作的非常简单的解决方案(例如,查询:“A 或 B 或 C”) - 只需使用另一个非常大的分布式表,该表将保存从任何单词到其所在文档的倒排索引在这种情况下,给定“A或B或C”,我们可以直接转到索引表中的“A”或“B”或“C”条目并收集所有文档ID。然后,一旦我们有了 id 就可以自行获取文档。
但是如何设计一个支持高效 AND 运算的数据库(例如,如果我需要搜索“A 和 B 和 C”)?
I'm curios how can a NoSQL solution support keyword search in a very very big table distributed accross multiple servers?
By keyword search I mean a DB like the one Google has, with huge amount of documents, and with the ability to answer such question like find "hotels in New York" very fast indeed.
I see very simple solution to support OR operation in NoMysql solution (for example, queries like: "A or B or C") - just to use another very big distributed table that will hold an inverted index from any word to the document it is found in. In such case, given "A or B or C", we can just go directly to "A" or "B" or "C" entries in the index table and collect all the documents-ids. Then, once we have the ids to to fetch the documents themselfes.
But how to design a DB that will support efficient AND operations (for example, if I need to search for "A and B and C")?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议您查看 elasticsearch 和 solr。
I'd recommend you to take a look at elasticsearch and solr.