我正在构建一个搜索引擎。我正在使用NoSQL各种键值数据存储,特别是Amazon SimpleDB,而不是常规的RDBMS。我有一个指向网页的URL表。我想我需要构建另一个表,可以用来查找哪些页面包含给定的英文单词。
此表的结构为:Search (String word, String URL)
,我的查询看起来像select from Search where word = "foo"
我应该在存储它们之前对字词进行散列并进行查找吗? I. e。我应该使用表格Search (String word_hash, String URL)
并使用select from Search where word = "acbd18db4cc2f85cedef654fccc4a4d8"
答案 0 :(得分:1)
除非你做这个练习,否则不要建立自己的练习。使用sphinx或类似的东西。
如果这个 是一个练习,那就指出了野心!搜索引擎是一个大项目。
我认为自己散列这些词没有任何价值。哈希表已在内部执行(它是哈希表)。稍后您可能想要进行基本的拼写更正,或者允许“书籍”也匹配“书”,例如,此时它将有助于使用纯文本词。
答案 1 :(得分:-1)
陪审团就是一般情况。虽然数据库似乎在内部进行哈希,但肯定有一个重要的反例:BigTable将其列为特定的好处,即“com.example.foo/*.html”之类的URL密钥将聚集在一起构成它更容易构建Google搜索索引。 (详见详见)。