我要建一个小的网络搜索引擎搜索约1万个网页,我想知道的是建立倒排索引的最佳方式?使用DBMS或什么...?从像存储成本,性能,索引和查询的速度很多不同的意见?我不希望使用任何开源项目,我想我自己一个人!

有帮助吗?

解决方案

也许你可能要阐述为什么你不希望使用F / OSS工具,如Lucene的或狮身人面像。

其他提示

目前大多数闭源数据库管理器有某种全文索引能力。由于其受欢迎程度,我猜大多数也有预先编写的过滤器HTML因此搜索类似<p>不会给1000个命中为每个网页。

如果您希望完全做的工作你自己,过滤HTML可能是一个最难的部分。从那里,倒排索引需要大量的文本处理,并产生一个大的结果,但它基本上是很简单 - 你只需扫描过的所有文件,并建立一个单词列表和它们的位置(通常过滤掉极为常见的后如“一”,“一个”,“和”等,这将是没有意义的搜索项)的话然后把这些所有连成一片大索引。

给予了充分的索引的大小,但是这是添加第二个层次的索引,它是足够小,你可以肯定它会很容易融入实际内存(例如它限制在几百项左右)。一个非常小的(但有点无效)版本只是单词的第一个字母变,因此,“A”字,在0在12345,“C”开始,“B”为34567,依此类推。这是不是很有效,但 - 你得到了很多更多的话,与“A”开始比“X”,例如。这是更有效地建立自己的指数,然后挑选在整个指数均匀分布的几百个(或其他)的话。然后使用它作为您的第一级索引。从理论上讲,你可以得到相当多的阐述,比如像一个B +树,但是这通常是矫枉过正 - 出的万份文件,有机会,你会被经常使用足够少于十万字结束做出太大的差别,以索引大小。即使在那个,不少条目会之类的东西错别字,不是真正的话......

我觉得这本书有你的答案,如果你还在寻找它。

http://nlp.stanford.edu/IR-book/信息检索-book.html

您可能要开始使用Hadoop。它会在集群上有效地分配你的索引构建。您可以使用任何语言了。 Java和Python建议。 使用Hadoop / MapReduce的,你可以很容易地索引你的网页。但他们将需要被缓存/存储在磁盘上,你会需要一个解析器/标记生成器首先提取文本。有在网络上的一些免费提供的解析器。 如果你想要做手工,你可以从这里开始。一旦你有一个索引,然后将其存储是另一项任务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top