我正在开发一个在业余时间使用谷歌模拟的搜索引擎。
我使用位于http://infolab.stanford.edu/~backrub/google.html的原始Google研究论文作为我的指南。
由于我正在开发一个非常简化的谷歌版本,我现在根本不使用pagerank算法。
到目前为止,我已经开发了一个简单的解析器和索引器,其结果是我有一个倒排索引,包含每个唯一单词的命中数,命中位置和文档哈希值。
现在我正在尝试开发一个查询引擎。但是,我发现很难为多令牌查询确定最相关的文档。
具体来说,我很难计算文档中查询词之间的接近程度。
我想到了一种算法,它扫描每个文档的查询单词,并根据查询单词彼此接近多少计算邻近分数,但我怀疑这需要很长时间,我认为有一个更好的办法,我不知道这一点,研究论文太笼统,无法得到答案。
我只是在寻找正确方向的指针。
非常感谢任何形式的帮助。
答案 0 :(得分:3)
查看维基百科http://en.wikipedia.org/wiki/Search_engine_indexing#Inverted_indices
上“搜索引擎索引”的倒排索引部分基本上,您希望保存文档中给定单词的位置信息,这样可以轻松计算邻近度。此信息保存在索引中。
关键是索引您的文档,因此您不需要每次都扫描它们。搜索关键字是在指向包含这些关键字的文档的索引上完成的。
P.S。不要忘记您正试图保持索引尽可能小,因此存储单词位置的间隙或差异将节省相同的内存(如第23页的J. Zobel, A. Moffat - Inverted Files for Search Text Engines中所述)。