需要有关信息检索的帮助

时间:2014-06-13 17:29:27

标签: java algorithm search-engine information-retrieval

我正在研究搜索引擎,需要帮助对网页进行排名。我创建了一个数据库表,其中存储了单词,链接号和频率。频率将告知该特定链接中出现的单词数量。

现在我想根据提供的查询对每个页面进行排名并在屏幕上显示链接,哪个算法对我有帮助?需要实施。

1 个答案:

答案 0 :(得分:0)

一个非常简化的解决方案是使用 tf-idf得分

tf(t,d) = (1/2 * #occurances(t,d)) / max{ #occurances(w,d) | for all w in collection }

这基本上是文档中术语的出现次数,标准化。

idf(t,D) = log( #documents / #documents_t_appears_in)

然后将tf-idf分数表示为:

tf_idf(t,d) = tf(t,d) * idf(t,D)

这个想法是 - 提升包含该术语很多次的文档,但是 - 如果这个术语很常见 - 使其不太重要 - 因为如果它出现在大多数文档中 - 它并没有说明相关性该文件。 (但如果这个术语很少见 - 提升它,那就非常有用了。)

如果您的查询为q=t1,t2,t3,..,tk,则查询的总分为:

tf-idf(q,d) = td-idf(t1,d) * tf-idf(t2,d) * ... * tf-idf(tk,d)

您可以将此方法与任何链接分析方法结合使用,例如Page-Rank

作为旁注,有一个名为lucene的java开源搜索引擎库,它为你做了很多肮脏的工作。