Adobe Analytics - Google Web Search API站内搜索跟踪实现

内部搜索是网站的又一重要要素,它可以:

  • 帮助访问者快速导航到指定内容:当网站信息量太大时,可导航对用户体验不佳、不够个性化时;
  • 给内容管理员提供思路:用户在网站上寻找的内容,就是用户想要的内容;
  • 提升转化率:用户能够越快找到他们想要的,他们的满意度也会越高,这也会带来更高的转化率;
  • 搜索关键字采集:记录用户在网站上想查找的关键字。
    对网站分析来说,站内搜索分析会包括:

  • 搜索频率最高的关键字?

  • 对高频率出现的关键字,网站是否提供了足够的内容?
  • 是否提供了用户搜索的产品或服务?
  • 用户习惯于使用站内搜索还是导航条?
  • 使用站内搜索的用户是否有较高的转化率?
    规划event、eVar和prop

根据站内搜索分析的需求,我们定义一个转化事件(Conversion Event)为站内搜索;搜索关键字会作为一个统计维度,我们定义一个转化变量(Conversion Variable)为关键字;此外为对关键字出现的频率作统计,以及内容的统计,我们还需要定义两个流量变量(Traffic Variable):关键字和搜索结果数量。

  • events

    • event2: 站内搜索
  • eVar

    • eVar3: 搜索关键字
  • prop

    • prop5: 搜索关键字
    • prop6: 搜索结果数量
      Google Web Search API

良好的网站实现模式会给数据跟踪带来许多便利,应用Google Web Search API就算是站内搜索中比较优秀的实现。我们的跟踪原理,是为Google Search Object添加一个搜索完成的回调函数,以回调函数中完成数据的发送。

在网站上集成Google Search API:

<script src=”http://www.google.com/jsapi" type=”text/javascript”></script>

页面上的Google Search Object定义:

var searchObj;
google.setOnLoadCallback(function(){
searchObj = new google.search.SearchControl();
var _searchOptions = new google.search.SearcherOptions();
_searchOptions.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);

_webSearchObj = new google.search.WebSearch();
_webSearchObj.setQueryAddition("inurl:www.mysite.com");
_webSearchObj.setSiteRestriction(key, "www.mysite.com");

searchObj.addSearcher(_webSearchObj, _searchOptions);
searchObj.setNoResultsString('No results were found.');
searchObj.setResultSetSize(google.search.Search.LARGE_RESULTSET);
searchObj.setLinkTarget(google.search.Search.LINK_TARGET_SELF);
var _webSearchDrawOptions = new google.search.DrawOptions();
_webSearchDrawOptions.setInput(document.getElementById("search-input"));
_webSearchDrawOptions.setSearchFormRoot(document.getElementById("cse"));
_webSearchDrawOptions.setAutoComplete(true);
searchObj.draw(document.getElementById("cse"),
_webSearchDrawOptions);
searchObj.draw("cse", _webSearchDrawOptions);
searchObj.execute();

}, true);
从上面我们可以看到,Google Search Object的搜索本身也由一个回调函数载入,我们无法直接调用到,所以首先,是添加一个载入完成回调函数:

google.setOnLoadCallback(onGoogleSearchLoaded);

接下来在这个函数中添加搜索完成的回调函数:

onGoogleSearchLoaded = function() {
if (typeof searchObj != ‘undefined’) {
searchObj.setSearchCompleteCallback(this, onSearchComplete);
}
}

数据发送:

onSearchComplete = function(sc, searcher) {
var searchTerm = ‘’, result = ‘0’;
if (searcher && searcher.results && searcher.results.length > 0) {
result = searcher.cursor.resultCount;
}
if (typeof searcher.he != ‘undefined’) {
searchTerm = searcher.he;
}
if (searchTerm.length > 0) {
s.linkTrackEvents = ‘event2’;
s.linkTrackVars = ‘eVar3,prop5,prop6,events’;
s.events = ‘event2’;
s.eVar3 = s.prop5 = searchTerm;
s.prop6 = searchResult;
s.tl(this, ‘o’, ‘Internal Searches’);
}
}

题外话一则,Google Web Search API现在已经过时,但仍然可以使用。它的替代品是Google Custom Search,有兴趣可以在Google Developer上阅读官方文档

© 2018 Silent River All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero