动态显示上下文相关广告的最有效方法是什么?

时间:2011-11-17 00:52:28

标签: java adsense

我在这里有一个网络平台,我想通过上下文相关广告来赚钱。

决定应展示哪个广告必须基于快速变化的内容与匹配广告的相关性之间的相关性。因此,这些广告必须实时(无法缓存!)。

我已经拥有一个包含数百万广告的数据库以及描述这些广告的关键字。

我还实施了一种算法,用于分析用户正在查看的内容,然后选择匹配的广告(基于其关键字)。

现在,问题是:由于有数百万可用的广告,我的算法必须逐步浏览这个大的广告列表,并检查每个广告的关键字是否(以及有多好)与当前查看的内容匹配。

这需要很长时间,每次内容更改时都必须重做(这可能会在几秒钟内发生)。迭代广告列表并单独获取关键字已经很慢了。


更新:为了让它更清晰一点,这里有一个我正在做的快速代码示例:

String text = getText(); // The content to analyse
text = text.toLowerCase();
List<Ad> ads = getAds();
Ad bestMatchingAd = null;

// ads.length() == Millions!
for (Ad ad : ads){
 List<String> keywords = ad.getKeywords();

 // keywords.length() == ~50
 for (String keyword : keywords){
  keyword = keyword.toLowerCase();
  if (text.indexOf(keyword) != -1){
   ad.increaseHitcounter(); // Increases number of keyword hits by 1
  }
 }

 // Check if this ad fits best to the given text
 if (bestMatchingAd != null){
  if (bestMatchingAd.getHitcounter() < ad.getHitcounter()){
   bestMatchingAd = ad;
  }
 }
 else{
  bestMatchingAd = ad;
 }
}

showAd(bestMatchingAd);

正如您所看到的,每次内容更改时,我都在迭代所有广告和所有关键字。这很多,并且需要很长时间。这里有什么更好的解决方案?

注意: Adsense 等常见解决方案不是一种选择,因为内容对公众不可见。因此,需要自己的实现。

3 个答案:

答案 0 :(得分:0)

您可以根据关键字在数据库中创建不同的表格,例如关键词从&#34; A&#34;将有一个名为a_table的表。现在在你的代码中,你可以搜索关键字,如包含什么关键字。把简单的if else梯子放进去。它将明确提高性能,因为编程语言的计算速度总是快于数据库。

答案 1 :(得分:0)

我认为问题在于为每个快速变化的网页搜索“最佳”广告。这里的关键问题是实时性。查询是网页中的关键字,会不时更改,而目标是来自广告的关键字,相对稳定。

我的解决方案:

1 /应以离线方式为所有广告生成倒置索引。如果您拥有大量的云计算技术,您可能需要使用某种云计算技术。

2 /每当网页的“内容”发生变化时,现在是重新分析其关键字并与已生成的反向索引进行匹配的正确时机。利用倒排索引,对于每个广告,它将在很短的时间内完成。

现在有两件事对你来说至关重要,a)当你判断网页真的发生变化时,b)最佳匹配是什么。

对于a,某些事件会直接导致更改,例如,用户在网页上发布新评论或有人编辑他的海报。

对于b,要计算广告的关键字点击次数或随机峰值,至少有一次点击的广告可能是最简单和最有效的方式。你可以使最佳匹配的标准更加复杂,效率降低。

就是这样。但我真的很想知道是否有必要处理这样一个实时问题。实际上,你可以用计算资源的成本来做到这一点。

希望它对你有用。

答案 2 :(得分:-1)

你不应该遍历列表,你需要更高效的东西,例如散列键或二叉树。

我敢打赌,如果你搜索大字符和搜索算法,你可以找到很多信息。