1

我正在建立一个搜索引擎。我使用的是 NoSQL 各种键值数据存储,特别是 Amazon SimpleDB,而不是常规的 RDBMS。我有一个指向网页的 URL 表。我想我需要建立另一个表格,可以用来查找哪些页面包含给定的英文单词。

该表的结构是:Search (String word, String URL)我的查询看起来像select from Search where word = "foo"

我应该在存储单词之前对单词进行哈希处理并进行查找吗? IE。我应该使用表:Search (String word_hash, String URL)并使用类似的查询select from Search where word = "acbd18db4cc2f85cedef654fccc4a4d8"

4

2 回答 2

2

除非您将此作为练习,否则不要构建自己的。使用狮身人面像或类似的东西。

如果这一个练习,那就给野心加分吧!搜索引擎是一个大项目。

我认为自己散列单词没有任何价值。哈希表已经在内部完成了(它是一个哈希表)。稍后您可能想要进行基本的拼写更正,或者例如允许“books”也匹配“book”,此时使用纯文本单词会有所帮助。

于 2012-04-10T23:09:02.027 回答
-1

陪审团是为一般案件而存在的。虽然看起来数据库会在内部散列,但肯定有一个重要的反例:BigTable 将其列为特定好处,例如“com.example.foo/*.html”之类的 URL 键将聚集在一起以实现它更容易建立谷歌搜索索引。(有关详细信息,请参阅 bigtable 论文)。

于 2012-06-10T20:11:53.597 回答