Attached is a patch against /core/DataFiles/SearchEngines.php with the following changes:
a) Added Google Zimbabwe (www.google.co.zw)
b) Updated URL of Metager (meta.rrz.uni-hannover.de). The old URL does not work anymore, so I think it's safe to replace it.
c) Added parameters as_q and as_epq for everything Google. These parameters are used by search appliances (instead of the usual q) and I've seen them for some, but not all Google sites. It seems wise to add them for all Google sites, though.
Attachment: Patch against /core/DataFiles/SearchEngines.php
Is this level of duplication necessary? If so, I'd prefer a code patch to eliminate the need for such duplication.
Well, as I said, I've seen the as_* strings only for some Google sites. That I don't see them for all of Google doesn't mean that they are not in use at most of Google, though. I have no idea how much performance it costs to have an array instead of a string as the parameter, so you have to decide what to do here (or maybe you can give some insight into it?).
Fact is, that you miss a lot of search requests, if you do not include these additional parameters at all (depending on where your search requests come from of course), so the minimum policy should be, that they will be included, if we know that they are in use (i.e. we've seen them).
I'll upload two new patches later today. Both with less code duplication and one with the additional parameters applied only to those Google sites where I've actually seen as_*.
To clarify... I would prefer to see less duplication of the keyword string (or array) in core/DataFiles/SearchEngines.php. Can we make it optional (either undefined or set to false), similar to the path (3rd array element). So, in core/Common.php, we could use something like this: (untested)
--- Common.php (revision 1384)
+++ Common.php (working copy)
@@ -773,6 +773,11 @@
$searchEngineName = $GLOBALS['Piwik_SearchEngines'][$refererHost];
$variableNames = $GLOBALS['Piwik_SearchEngines'][$refererHost];
+ if(!isset($variableNames) || $variableNames === false)
+ $url = $GLOBALS['Piwik_SearchEngines_NameToUrl'][$searchEngineName];
+ $variableNames = $GLOBALS['Piwik_SearchEngines'][$url];
$variableNames = array($variableNames);
In , refs #916 - optional query parameters
In , fixes #916 - add www.google.co.zw and update Metager
Deferring the addition of as_q and as_epq as these can both appear in query at the same time; doing this right means coding some Google-specific URL parser. (Could possibly also address as_oq and as_eq at that time...)